如果我在本地运行服务器,则会设置cookie,但当其托管在线上时:
- 如果secure=false,sameSite: 'none',那么我会收到以下错误
Cookie“connect.sid”将很快被拒绝,因为它的“sameSite”属性设置为“none”或无效值,没有 “secure”属性。要了解有关“sameSite”属性的更多信息,请阅读: https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite
然后我尝试使用secure=true
- 如果secure=true,sameSite: 'none',那么我知道它应该有效
它可以在本地托管服务器时工作并设置Cookie。 但是当它在heroku上托管时,Cookie未设置,我没有收到任何错误。
似乎客户端网站不安全,但在url框中显示https
我在这里做错了什么?
session config:
router.use(
session({
cookie: {
secure: true,
maxAge: 86400,
sameSite: "none",
},
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
})
);
注意:我已经启用了带有凭据的CORS
XHR的Cookies标签为空。前端和后端在Heroku上分别托管。使用XMLHttpRequest发送的POST请求,其中withCredentials设置为true。
XHR POST https://sih-drs-prototype-backend-2.herokuapp.com/api/outrages/login [HTTP/1.1 200 OK 1625ms]
POST https://sih-drs-prototype-backend-2.herokuapp.com/api/outrages/login 状态码 200,版本 HTTP/1.1,传输367 B(2 B 大小)。
Access-Control-Allow-Credentials
true
Access-Control-Allow-Origin
https://tempautocomplete.herokuapp.com
Connection
keep-alive
Content-Length
2
Content-Type
application/json; charset=utf-8
Date
Sun, 12 Jul 2020 14:06:42 GMT
Etag
W/"2-vyGp6PvFo4RvsFtPoIWeCReyIC8"
Server
Cowboy
Vary
Origin
Via
1.1 vegur
X-Powered-By
Express
Accept
*/*
Accept-Encoding
gzip, deflate, br
Accept-Language
en-US,en;q=0.5
Connection
keep-alive
Content-Length
46
Content-Type
application/json;charset=UTF-8
Host
sih-drs-prototype-backend-2.herokuapp.com
Origin
https://tempautocomplete.herokuapp.com
Referer
https://tempautocomplete.herokuapp.com/static/
User-Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0