瓶,如何在AJAX请求期间get_cookie(同域)

时间:2015-01-25 11:52:18

标签: ajax python-3.x cookies xmlhttprequest bottle

我使用bottle set / get cookie mecanism来跟踪我的user_id(调用set / get_cookie时使用'secret'param)()
在正常的http(s)请求期间一切正常但是在发出xhr请求时(同一个域)user_id = request.get_cookie('user_id', secret='mysecret')返回None。
检查客户端浏览器时,cookie和键/值仍然可用。

如何处理?
(我总是被告知xhr请求是http请求,所以从同一个域,cookie应该被共享,不是?是从'秘密'处理引起的问题吗?)

2 个答案:

答案 0 :(得分:1)

我在AJAX请求下尝试set_cookies('test', 123, secret='mysecret'),它有效,但仍然无法找到以前的Cookie。

然后我评论说我以前的cookie,名为cook1和cook2,写在'普通'http请求下,如果他们有相同的域,则有不同的'路径'(在Chrome ressource explorer下)。它们设置在路径'/ XXX / dev'下,我的AJAX请求就在路径'/ XXX'下 所以我将/ XXX / do_stuff中的AJAX请求修改为指向'/ XXX / dev / do_stuff',然后惊喜!我的AJAX请求可以读取cook1和cook2。

不确定这是否是一个瓶子错误,或者这种行为是故意设计的(在这种情况下,如果有人可以向我解释原因......),但至少我有我的解决方案。

答案 1 :(得分:1)

文档说明,在设置cookie时,默认路径为" /" https://bottlepy.org/docs/dev/tutorial.html#tutorial-cookies

  

路径:将cookie限制为给定路径(默认值:/)

但代码评论说默认是"当前路径"例如/XXX/dev https://github.com/bottlepy/bottle/blob/master/bottle.py#L1796

  

:param path:将cookie限制为给定路径(默认值:当前路径)

基于这种行为,我们可以假设后者是真的。

因此,在设置Cookie时,如果您希望任何路径可以访问您域中的Cookie。将Cookie中的路径设置为" /"

set_cookies('test', 123, secret='mysecret', path='/')