Cloudflare服务工作者代码可“绕过Cookie上的缓存”不工作 [英] Cloudflare service worker code to "Bypass cache on cookie" not working
问题描述
我以Cloudflare Service Worker的身份编写了这段代码,目的是精确模拟其本机功能,以绕过cookie上的缓存。具体来说,如果某人拥有Wordpress Cookie,它将绕过缓存,否则不会。
它似乎根本不起作用-尽管有Cookie和正在登录(通过Chrome开发者工具确认)-在此示例域上,我仍然获得Cloudflare缓存HIT-
尝试一下,让我知道
addEventListener('fetch' ,事件=> {
let request = event.request
var flag = false;
if(request.headers.has('Cookie')){
var cookie = request.headers.get('Cookie');
对= cookie.split(;);
var patt = new RegExp( wordpress_logged_in。* | wp_woocommerce_session。*);
for(var i = 0; i if(patt.test(pairs [i])){
flag = true;
休息时间;
}
}
console.log(flag);
if(request.headers.has('Cookie')&& flag){
let newHeaders = new Headers(request.headers)
newHeaders.set('Cache-Control' ,'no-cache')
newHeaders.set('Pragma','no-cache')
event.respondWith(fetch(request,{headers:newHeaders}))
}
//使用默认行为。
的回报;
}
})
I wrote this code as a Cloudflare Service Worker which is meant to precisely emulate their native function for "Bypass cache on cookie". Specifically, if someone has a Wordpress cookie - it would bypass cache, otherwise it does not.
It does not seem to function at all - in that despite having a cookie and being logged in (confirmed via Chrome developer tools) - I still get a Cloudflare cache HIT on this example domain - Tallyfy. Anything wrong with it? Help appreciated!
// A Service Worker which skips cache if the request contains a cookie.
addEventListener('fetch', event => {
let request = event.request;
var flag=false;
if(request.headers.cookie) {
var pairs = request.headers.cookie.split(";");
var patt = new RegExp("wp-.*|wordpress.*|comment_.*|woocommerce_.*")
for(var i=0;i<pairs.length;i++){
if(patt.test(pairs[i])){
flag = true;
break;
}
}
}
if (request.headers.has('Cookie') && flag) {
// Cookie present. Add Cache-Control: no-cache.
let newHeaders = new Headers(request.headers)
newHeaders.set('Cache-Control', 'no-cache')
event.respondWith(fetch(request, {headers: newHeaders}))
}
// Use default behavior.
return
})
try this and let me know
addEventListener('fetch', event => {
let request = event.request
var flag = false;
if (request.headers.has('Cookie')) {
var cookie = request.headers.get('Cookie');
pairs = cookie.split(";");
var patt = new RegExp("wordpress_logged_in.*|wp_woocommerce_session.*");
for(var i=0;i<pairs.length;i++){
if(patt.test(pairs[i])){
flag = true;
break;
}
}
console.log(flag);
if (request.headers.has('Cookie') && flag) {
let newHeaders = new Headers(request.headers)
newHeaders.set('Cache-Control', 'no-cache')
newHeaders.set('Pragma', 'no-cache')
event.respondWith(fetch(request, {headers: newHeaders}))
}
// Use default behavior.
return;
}
})
这篇关于Cloudflare服务工作者代码可“绕过Cookie上的缓存”不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!