gpt4 book ai didi

javascript - 即使 CORS 配置为允许访问,也未发送 Http cookie

转载 作者:行者123 更新时间:2023-12-01 16:25:57 25 4
gpt4 key购买 nike

我有一个 Web 应用程序需要访问 siteA 和 siteB(两者都在我的管理之下)。在 Web 应用程序与 siteA 对话(并从 siteA 获取 cookie)并跳转到 siteB 之后,它需要与 siteA 进行调用,但是 http 请求不包含任何 cookie,即使我(通过 cors)将 siteA 配置为信任站点 B 并允许凭据。

已经在 SO 和其他网站上使用谷歌搜索和阅读文档,但是,我就是无法在 HTTP 请求中发送 cookie。这是使用 siteA 进行 API 调用的 javascript(在 siteB 的页面中运行,浏览器是 chrome)

await (await fetch("http://siteA/api/1/greeting", {credentials: 'same-origin'})).text()
"Greetings from Spring Boot!"

这里是上面javascript发送的HTTP请求。

GET /api/1/greeting HTTP/1.1
Host: siteA
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4117.2 Safari/537.36
Accept: */*
Origin: https://siteB
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

这是响应:

HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://siteB
Access-Control-Allow-Credentials: true
Set-Cookie: jname=joe; HttpOnly
Content-Type: text/plain;charset=UTF-8
Content-Length: 27
Date: Sun, 26 Apr 2020 17:58:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive

感谢任何帮助或想法!

PS1:当我刷新 siteA 的网页时,我可以看到(从开发控制台)请求有 cookie。

PS2:尝试在 javascript 代码段中使用 credentials: 'include',它也没有用。

最佳答案

您能否尝试将上面的代码更改为:

await (await fetch("http://siteA/api/1/greeting", {credentials: 'include'})).text()

参见此处:https://javascript.info/fetch-crossorigin

关于javascript - 即使 CORS 配置为允许访问,也未发送 Http cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61446565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com