代码中有错误,但我不知道是什么。
未捕获(承诺)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);
}
答案 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
}
);