gpt4 book ai didi

javascript - CORS 使用浏览器的 session cookie 获取身份验证

转载 作者:行者123 更新时间:2023-11-30 23:57:15 25 4
gpt4 key购买 nike

我有一个存储 session cookie 的服务器,您可以使用在浏览器中运行的页面 (foo.com/login.html) 登录到它。然后浏览器会存储该域的 session cookie。

现在我希望另一个页面 (bar.com) 在初始化时使用 JavaScript 向第一页 (foo.com/authenticate) 发出 GET 请求,该请求应检查浏览器中是否存在 session cookie 并验证它(如果正确)他应该用 session 的用户名进行响应(但是这是从 cookie 中检索的)。当然,如果 foo.com 存在 session cookie,我无法检查 bar.com 的 JavaScript。

在尝试解决这个问题时,我遇到了一些问题,其中之一当然是 CORS。我通过在 foo.com 前面放置一个反向代理来避免这个问题,该代理将所有必需的 CORS header 添加到响应中。除了添加 header 之外,代理仅通过隧道传输请求(例如 rev-proxy.com/authenticate -> foo.com/authenticate)

现在,当我直接从另一个浏览器窗口(例如 rev-proxy.com/authenticate)通过 rev 代​​理调用处理程序时,我得到了正确的响应。 foo.com 后端的处理程序找到 session cookie,读出用户名并将其传回。但是当我尝试从 bar.com 内的 JavaScript 进行相同的调用(fetch("rev-proxy.com/authenticate"))时,我收到 null,这意味着他没有找到 cookie(请注意,请求本身的状态为 200 ,这意味着它确实到达了 foo.com 的后端)。

我感觉我错过了浏览器如何使用 cookie 的一个关键点,但我找不到关于我的具体问题的任何有用信息,因为我认为这是一个相当不寻常的问题。

最佳答案

参见the MDN documentation :

fetch won’t send cookies, unless you set the credentials init option. (Since Aug 25, 2017. The spec changed the default credentials policy to same-origin. Firefox changed since 61.0b13.)

关于javascript - CORS 使用浏览器的 session cookie 获取身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60967354/

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