【发布时间】:2019-11-19 18:32:15
【问题描述】:
我正在使用 fetch 向后端发出请求。 当我使用不同的域时,没有设置 cookie。 当我使用相同的域时设置了 cookie。
为什么没有设置?
我修改了我的 /etc/hosts 文件以使用假名来测试使用相同和不同的域,并确保它们也是 not blacklisted by the browser。
如果我对浏览器和服务器域都使用local-test-frontend.com,它可以工作,但如果我将后端网址更改为local-test-backend.com,它会失败。
*请注意,我测试它的前端网址是 * http://local-test-frontend.com:3000/login
Javascript
fetch('http://local-test-backend.com/login', {
mode: 'cors',
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(loginRequest),
credentials: 'include'
}).then(// Other code here.....
服务器响应标头
Access-Control-Allow-Credentials
true
Access-Control-Allow-Origin
http://local-test-frontend.com:3000
Content-Length
103
Content-Type
application/json
Date
Wed, 10 Jul 2019 07:23:49 GMT
Server
Werkzeug/0.15.1 Python/3.7.3
Set-Cookie
MY_TOKEN=a7b8ad50f19…end.com; Path=/; SameSite=Lax
【问题讨论】:
-
你能把你的问题说清楚吗?我没看到这里有什么问题?
-
通过在地址栏中输入 URL,您可以从 A(从源 X)请求 HTML 文档。这会在响应 B 中给出一个 HTML 文档。然后您使用 JavaScript 向不同的源 (Y) 发出请求 (C),该源 (Y) 得到响应 (D)。其中哪个包含
Set-Cookie标头? (我认为它是 D,但我想确定)。那么,您如何确定 cookie 尚未设置?你会提出额外的要求吗?发源地? -
你不能跨域共享 cookie stackoverflow.com/questions/3342140/cross-domain-cookies 虽然
-
@zakir 刚刚添加了“为什么没有设置?”到问题主体。几乎,当向服务器发送请求时,与浏览器的域不同,cookie 不会被浏览器设置
-
@hackerl33t 我不想跨域共享 cookie,我只是想通过调用不同域上的服务器来为我当前的域设置一个 cookie。不确定该链接/答案是否适用?
标签: javascript flask cors cross-domain fetch