Cloudflare服务工作者代码可“绕过Cookie上的缓存”不工作 [英] Cloudflare service worker code to "Bypass cache on cookie" not working

查看:266
本文介绍了Cloudflare服务工作者代码可“绕过Cookie上的缓存”不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆