Express 浏览器未为显式域保存cookie
在服务器上我使用express.js,在浏览器中我使用fetchapi。我使用默认域发送cookie,浏览器将其正确设置并与后续请求一起发送。但是当我将域设置为父域时,cookie不会被设置。我的理解是 假设我的代码是从“my.example.com”端口8080提供的。然后,我的服务器代码如下所示:Express 浏览器未为显式域保存cookie,express,cookies,xmlhttprequest,session-cookies,fetch-api,Express,Cookies,Xmlhttprequest,Session Cookies,Fetch Api,在服务器上我使用express.js,在浏览器中我使用fetchapi。我使用默认域发送cookie,浏览器将其正确设置并与后续请求一起发送。但是当我将域设置为父域时,cookie不会被设置。我的理解是 假设我的代码是从“my.example.com”端口8080提供的。然后,我的服务器代码如下所示: response.cookie("token",token,{ encode:String, domain:".example.com", expires: new Dat
response.cookie("token",token,{
encode:String,
domain:".example.com",
expires: new Date(Date.now()+86400000000),
secure:false}
)
fetch("/login", {
credentials: "include", // also tried "same-origin"
mode:"cors", // also tried omitting
headers:new Headers( {
// authentication data is here
})
})
在客户端上,我的代码如下所示:
response.cookie("token",token,{
encode:String,
domain:".example.com",
expires: new Date(Date.now()+86400000000),
secure:false}
)
fetch("/login", {
credentials: "include", // also tried "same-origin"
mode:"cors", // also tried omitting
headers:new Headers( {
// authentication data is here
})
})
起初我认为这是一个事实,它是父域,但如果我使用任何域,它似乎没有得到保存的cookies
因此,在客户端上不会保存以下内容:
domain:".example.com",
domain:".example.com:8080",
domain:"my.example.com",
domain:"my.example.com:8080",
但如果我省略了“域”,那么它确实会被保存
更清楚的是,当我在Chrome developer tools中看到回复时,我看到cookie被收到了——它只是因为某种原因没有被保存
我需要能够从任何其他子域为任何子域设置此cookie。从我读到的内容来看,a.example.com应该可以将cookie设置为.example.com,以便b.example.com可以使用它
更新:我还尝试使用XMLHttpRequest,得到了相同的行为
更新2:我也无法直接从带有父域的javascript设置cookie,例如,这可以:
document.cookie=("token=<...>; Domain=my.example.com; Path=/")
document.cookie=(“令牌=;域=my.example.com;路径=/”)
但这并不是:
document.cookie=(“令牌=;域=.example.com;路径=/”)
从我所读到的一切来看,这一行应该行得通,但它对我不起作用。我认为这里应该没有问题,对吗?如果是这样,我如何解决为什么无法设置cookie的问题?我已经尝试过的事情: