Не работает рабочий код сервиса 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;
  }
})
Другие вопросы по тегам