【问题标题】:Cookies are not sent in cross-origin request跨域请求不发送 Cookie
【发布时间】:2019-02-11 02:31:48
【问题描述】:

我正在我的本地主机上做一个小项目,并希望它向我的其他服务器发送一个 JSON 跨域请求,该服务器在 PHP 中实现了一些 REST API。

为了正确处理请求,服务器必须接收在用户登录时设置的 cookie。

当我登录到我的服务器并在浏览器中手动打开 API URL 时,我可以在 F12 工具中看到与请求一起发送的 Cookie: 标头。但是,当我从本地主机上的脚本执行跨域请求时:

var xhr = new XMLHttpRequest();
xhr.open('GET', "https://devbox.my.domain/api.php", true);
xhr.setRequestHeader('Accept', 'application/json'); 
xhr.withCredentials = true;
xhr.send();

...Cookie: 标头未发送,在 F12 工具中查看 Network 选项卡时,我也没有看到任何预检 OPTION 请求。

我没有详细说明我如何在服务器上处理带有Access-Control-Allow-Origin: * 标头等的请求,因为您可以看到问题发生在之前,即服务器一开始没有获取 cookie .

cookie 有 SameSite=Lax,但这不会改变行为。

有没有办法强制发送Cookie?

【问题讨论】:

    标签: javascript cookies xmlhttprequest cross-domain


    【解决方案1】:

    如果您想发送此 cookie 的内容,cookie 会保留在前端,您需要通过 get 调用发送它或将其保存在 header 中

    【讨论】:

    • 我不是在问如何设置 cookie。正如我之前所说,当我登录服务器时,cookie已经设置好了。
    • 如果你想通过请求发送它,这个信息(cookie)需要与请求调用一起去
    • 感谢您抽出宝贵时间,但我的问题是关于 CORS 相关的 cookie 细节,我非常详细地介绍了我的案例。如果您不熟悉它,请删除您的答案,因为它没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2015-04-24
    • 2014-07-12
    相关资源
    最近更新 更多