Cloudflare Workers Redirect отладки - PullRequest
0 голосов
/ 13 декабря 2018

В коде есть ошибка, но я не могу понять, что.

Uncaught (в обещании) ReferenceError: req не определено в doRedirects (VM8 worker.js: 6) во время события (VM8worker.js: 2) Uncaught (в ответе) 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 голосов
/ 13 декабря 2018

req.headers.get вернет строку или ноль ( документация ).

Строки имеют метод match, который принимает регулярное выражение ( документация ).

Попробуйте изменить эту строку:

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

На это:

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

Другая проблема заключается в том, что класс Response не имеет метода redirect ( документация ).

Попробуйте изменить эту строку:

return Response.redirect(newLocation, 302)

На это:

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