如何跨域共享cookies?更具体地说,如何使用Set-Cookie
标题与标题相结合Access-Control-Allow-Origin
?
这是我的情况的解释:
我正在尝试为正在运行的 API 设置 cookielocalhost:4000
在托管于的网络应用程序中localhost:3000
.
我似乎在浏览器中收到了正确的响应标头,但不幸的是它们没有效果。这些是响应标头:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://localhost:3000
Vary: Origin, Accept-Encoding
Set-Cookie: token=0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Max-Age=86400; Domain=localhost:4000; Path=/; Expires=Tue, 19 Sep 2017 21:11:36 GMT; HttpOnly
Content-Type: application/json; charset=utf-8
Content-Length: 180
ETag: W/"b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ"
Date: Mon, 18 Sep 2017 21:11:36 GMT
Connection: keep-alive
此外,我可以看到下面的cookieResponse Cookies
当我使用 Chrome 开发者工具的“网络”选项卡检查流量时。然而,我看不到在“应用程序”选项卡中设置的 cookieStorage/Cookies
。我没有看到任何 CORS 错误,所以我认为我还遗漏了其他内容。
有什么建议么?
更新一:
我正在使用requestReact-Redux 应用程序中的模块向/signin
服务器上的端点。对于服务器我使用express。
快递服务器:
res.cookie('token', 'xxx-xxx-xxx', { maxAge: 86400000, httpOnly: true, domain: 'localhost:3000' })
在浏览器中请求:
request.post({ uri: '/signin', json: { userName: 'userOne', password: '123456'}}, (err, response, body) => {
// doing stuff
})
更新二:
我现在疯狂地设置请求和响应标头,确保它们都出现在请求和响应中。下面是一个屏幕截图。注意标题Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
, Access-Control-Allow-Methods
and Access-Control-Allow-Origin
。看看我发现的问题axios 的 github,我的印象是所有必需的标头现在都已设置。然而,还是没有运气……