【发布时间】:2020-10-26 04:33:37
【问题描述】:
我有一个带有域 sambat.io 的反应前端,部署到 Vercel (Zeit) 和一个部署到 Heroku 的节点 API,这个域 https://safe-ridge-68566.herokuapp.com/ 和 cookie 设置如下:
res.cookie('something', 'ckwdnjwedjbdh3bhbd2hdbhbhbhfbdsf', {
httpOnly: true,
sameSite: 'none',
domain: '.sambat.io',
secure: true
})
当我访问前端时,我可以在响应中看到 Set-Cookie 标头,但它不会设置 cookie,并且有以下警告:
此 Set-Cookie 被阻止,因为它的 Domain 属性对于当前主机 url 无效。
我错过了什么?
这是网络请求和响应的详细信息:
GENERAL
Request URL: https://safe-ridge-68566.herokuapp.com/users/twitter
Request Method: POST
Status Code: 201 Created
RESPONSE HEADERS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://sambat.io
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Set-Cookie: something=hwjdhwjdhwjehdjwdhuhhd3hd3u; Domain=.sambat.io; Path=/; HttpOnly; Secure; SameSite=None
Vary: Origin
REQUEST HEADERS
Accept: application/json, text/plain, */*
Connection: keep-alive
Content-Type: application/json
Cookie: something=hwjdhwjdhwjehdjwdhuhhd3hd3u
Host: safe-ridge-68566.herokuapp.com
Origin: https://sambat.io
Pragma: no-cache
Referer: https://sambat.io/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
【问题讨论】:
-
为什么要设置:domain: '.sambat.io',?
-
@mabruk 因为那是前端应用程序的域。
domain不应该是目的地的域,不是吗?抱歉,我对此真的很陌生。 -
你是对的。尝试域名的完整网址:域名:sambat.io(带 https://)
-
@mabruk 很遗憾不是这样。问题是因为您无法在生产时在不同的域上设置 cookie。在开发过程中,它工作得很好。
标签: javascript node.js express cookies setcookie