所以我正在尝试为本地开发设置环境,以便从dev.mydomain.com
的dev服务器中提取数据。
服务数据的龙卷风REST服务器使用基于cookie的身份验证。
为了获取cookie,我向服务器发送了一个AJAX帖子登录请求(来自localhost
网站),安全cookie返回到响应中。我可以在chrome控制台(网络 - > cookies)中看到它。它具有正确的名称,值,域(dev.mydomain.com
)和所有内容。
然而,cookie没有设置,后面的REST请求失败。它不是跨性别相关的。如果我转到dev.mydomain.com并在另一个选项卡中手动登录,cookie将被正确设置,并且我从本地域发送的所有后续请求都可以正常工作(因为它们会抓取现在存在的cookie)。
我的所有要求都包含此内容:
xhrFields: {
'withCredentials': true
}
这就是我的龙卷风服务器设置cookie的方式:
self.set_secure_cookie(
COOKIE_NAME, tornado.escape.url_escape(str(COOKIE_VALUE)),
expires_days=1, domain="dev.mydomain.com"
)
如果登录请求来自localhost
,>>
我尝试将127.0.0.1映射到foo.mydomain.com
(对于任何值得的东西),但这没有帮助。
另外,我无法使用javascript获取cookie。尝试xhr.getResponseHeader('Set-Cookie');
,产生空。
答案 0 :(得分:0)
对我而言,如果您为dev.mydomain.com
设置cookie,它既不适用于foo.mydomain.com
也不适用于localhost
。
如果您执行以下操作会发生什么:
self.set_secure_cookie(
COOKIE_NAME, tornado.escape.url_escape(str(COOKIE_VALUE)),
expires_days=1, domain=".mydomain.com"
)
*.mydomain.com
可能适用。
编辑:
实际上,我一遍又一遍地检查,我找不到一个例子,人们使用这个论点'域'对于set_secure_cookie()
而言,此参数存在于' set_cookie()',如docs中所述:
直接在Cookie.Morsel上设置其他关键字参数。 请参阅http://docs.python.org/library/cookie.html#morsel-objects 可用属性。
如果您确定使用安全cookie,首先应确保在应用程序设置中使用cookie密码
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
)