gpt4 book ai didi

javascript - 从远程域设置 cookie 以进行本地开发

转载 作者:行者123 更新时间:2023-11-28 07:23:01 27 4
gpt4 key购买 nike

因此,我正在尝试设置本地开发环境,以从我的开发服务器 dev.mydomain.com 提取数据。 .

提供数据的tornado REST 服务器使用基于cookie 的身份验证。

为了获取 cookie,我向服务器发送了一个 AJAX 登录后请求(来自 localhost 的网站),安全 cookie 在响应中返回。我可以在 chrome 控制台(网络->cookie)中看到这一点。它具有正确的名称、值、域 ( dev.mydomain.com ) 和一切。

但是,cookie 未设置,后续的 REST 请求失败。它与跨域无关。如果我转到 dev.mydomain.com 并在另一个选项卡中手动登录,则 cookie 会被正确设置,并且从本地域发送的所有后续请求都可以正常工作(因为它们获取了现有的 cookie)。

我的所有请求都包含以下内容:

xhrFields: {
'withCredentials': true
}

这就是我的 Tornado 服务器设置 cookie 的方式:

self.set_secure_cookie(
COOKIE_NAME, tornado.escape.url_escape(str(COOKIE_VALUE)),
expires_days=1, domain="dev.mydomain.com"
)

知道为什么如果登录请求来自 localhost 则 cookie 没有被设置吗? ?

我尝试将 127.0.0.1 映射到 foo.mydomain.com (无论什么值(value))但这没有帮助。

此外,我无法使用 javascript 获取 cookie。尝试过xhr.getResponseHeader('Set-Cookie'); ,产生 null。

最佳答案

不知何故,如果您为 dev.mydomain.com 设置 cookie,它对 foo.mydomain.com 都不起作用,这对我来说是有道理的>本地主机

如果你这样做会发生什么:

self.set_secure_cookie(
COOKIE_NAME, tornado.escape.url_escape(str(COOKIE_VALUE)),
expires_days=1, domain=".mydomain.com"
)

*.mydomain.com 可能会起作用。

编辑:

实际上,我检查了一遍又一遍,但找不到人们将参数“domain”用于 set_secure_cookie() 的示例,但此参数存在于“set_cookie()” ,如 docs 中所述:

Additional keyword arguments are set on the Cookie.Morsel directly. See http://docs.python.org/library/cookie.html#morsel-objects for available attributes.

如果您确定使用安全 Cookie,则应首先确保在应用程序设置中使用 Cookie secret

class Main(web.Application):
def __init__(self):
settings = dict(
cookie_secret = "xxxx",
)

然后尝试设置安全 cookie,而不指定域

self.set_secure_cookie(
COOKIE_NAME, tornado.escape.url_escape(str(COOKIE_VALUE)),
expires_days=1
)

关于javascript - 从远程域设置 cookie 以进行本地开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073998/

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