Mehran
Mehran

Reputation: 16931

Why not all headers can be found in fetch's response?

I'm trying to intercept Set-Cookie response header from fetch's response:

fetch('https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png', {
	method: 'get'
}).then(function(response) {
    for (var pair of response.headers.entries()) {
        console.log(`${pair[0]}: ${pair[1]}`);
    }
});

But not all of the headers (as can be seen in developer tools' network) can be found in there! Why is that? Is there any way I can get the header I'm looking for?

Just for clarification, I'm not looking for the cookie but I'm interested to know when the Set-Cookie header is sent.

Upvotes: 1

Views: 426

Answers (1)

TomLingham
TomLingham

Reputation: 331

You cannot read the Set-Cookie header as it is declared as forbidden. The fetch polyfill on github provides a reasonable explanation:

Like with XMLHttpRequest, the Set-Cookie response header returned from the server is a forbidden header name and therefore can't be programatically read with response.headers.get(). Instead, it's the browser's responsibility to handle new cookies being set (if applicable to the current URL). Unless they are HTTP-only, new cookies will be available through document.cookie.

https://github.com/github/fetch#receiving-cookies

Upvotes: 2

Related Questions