How to tell why a cookie is not being sent?
How to tell why a cookie is not being sent:
Go to network tab, and click the request that is not being sent with your cookie.
Go to the "Cookies" tab just appeared.
Check "show filtered out request cookies" to see all the cookies that wasn't sent, they'll appear in yellow.
Then a little "i" label will appear next to the property that is preventing the cookie from being sent. You can hover over to see the detail:
This is a Chrome specific bug. No fix yet..
#56211 chrome.cookies fails for localhost domains
https://code.google.com/p/chromium/issues/detail?id=56211
May also want to read this question. It isn't specific to chrome like this question, but it is specific to localhost behavior (unlike this question).
The problem is this:
domain=dev;
Quoting from RFC 2945:
The value of the Domain attribute specifies the domain for which the cookie is valid. If an explicitly specified value does not start with a dot, the user agent supplies a leading dot.
So the web client will only send the cookie if the host address ends in .dev.
Try sending the cookie without the domain attribute.
In my case, it was because Fetch API doesn't send cookies unless credentials: "include"
is given as an option.
fetch('API_ENDPOINT',{
method: 'POST',
credentials: 'include',
body: JSON.stringify(some_json_obj)
})
Also, I had to configure the Node.js ( express.js ) backend CORS as follows.
const cors = require('cors')
const corsOptions = {
origin: 'http://localhost:3000',
credentials: true
}
app.use(cors(corsOptions));