Cloudflare Workers重定向调试

时间:2018-12-13 13:10:28

标签: javascript cloudflare cloudflare-workers

代码中有错误,但我不知道是什么。

未捕获(承诺)ReferenceError:未定义req     在doRedirects(VM8 worker.js:6)     事件发生时(VM8 worker.js:2) 未捕获(作为响应)ReferenceError:未定义req

addEventListener("fetch", event => {
    event.respondWith(doRedirects(event.request))
})

const newLocationHost = "developers.cloudflare.com";

async function doRedirects(request) {
    let reqUA = req.headers.get('user-agent')
    if (reqUA.matches('curl').true) {
        let newLocation = "https://"+newLocationHost
        return Response.redirect(newLocation, 302)
    }
    return fetch(request);
}   

1 个答案:

答案 0 :(得分:0)

req.headers.get将返回字符串或null(documentation)。

字符串具有一个match方法,该方法接受正则表达式(documentation)。

尝试更改此行:

 if (reqUA.matches('curl').true) {

对此:

if (requUA !== null && reqUA.match(/curl/)) {

另一个问题是Response类没有redirect方法(documentation)。

尝试更改此行:

return Response.redirect(newLocation, 302)

对此:

return new Response(undefined, {
  status: 302,
  statusText: 'Found',
  headers: {
    Location: newLocation
  }
);