302 Redirect headers are missing
# workers-help
k
Is it possible to extract the original headers from a worker fetch request to an end-point which returns a 302? e.g. const res = await fetch("http://localhost:3000/", { "redirect": "manual" }) res = {"body":{},"bodyUsed":false,"headers":{},"url":"http://localhost:3000/","redirected":false,"ok":false,"statusText":"Found","status":302} If I run the same request via curl I get the original headers (e.g. location + set-cookie): curl -v http://localhost:3000/ < HTTP/2 302 < cache-control: private < location: https://www.google.com < set-cookie: SIGNIN.REQUEST=1683699853; path=/; secure; HttpOnly < access-control-expose-headers: Request-Context < date: Tue, 09 May 2023 14:49:59 GMT < content-length: 0 Is it possible to extract the original headers using Cloudflare workers (or any other Cloudflare service)? The main problem is that the set-cookie header is lost.
j
The headers shouldn't be lost - where are you seeing that? If you're only looking at the log of
res
, you won't see headers due to how that gets serialised
You'll want to
const headers = Object.fromEntries(res.headers.entries())
or something
Or just
res.headers.get('location')
, etc.
k
I agree, but they are. The 302 response object only contains following properties.
{"body":{},"bodyUsed":false,"headers":{},"url":"http://localhost:3000/", "redirected":false,"ok":false,"statusText":"Found","status":302}
I think there is a limitation / restriction with fetch and response code 302. Is there any workaround?
j
Where is that log from? Headers being empty is a misnomer - it’s not actually empty. That’s a result of how things get serialised for logs.
Try this, and log the object
k
Thanks! It worked with Object.fromEntries(res.headers.entries()), but console.log("Headers", JSON.stringify(res.headers.entries())) contains nothing
j
Yep entries is an iterator so you have to consume it first, then you can log it 😀
If you only need one header you can also just do this ^
k
Many thanks James! You saved my day 🙂
j
Happy to help!