Не работает рабочий код сервиса Cloudflare, чтобы "обойти кеш на cookie"
Я написал этот код как Cloudflare Service Worker, который предназначен для точной эмуляции их собственной функции "Обойти кеш на cookie". В частности, если у кого-то есть файл cookie Wordpress - он будет обходить кеш, в противном случае его нет.
Похоже, что он вообще не работает - несмотря на наличие файла cookie и вход в систему (подтверждено с помощью инструментов разработчика Chrome) - я все еще получаю HIT кеша Cloudflare в этом примере домена - Tallyfy. Что-то не так с этим? Помощь оценена!
// 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
})
1 ответ
Попробуй это и дай мне знать
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;
}
})