当我们从客户端(android离子库)发送ajax请求时设置“Cookie”标头
大多数情况下,django会使用request.COOKIES
获取Cookie
但有时,在sessionid
request.COOKIES
)
可能的原因是什么?
我无法找到在Django代码库中设置request.COOKIES
的地方......
答案 0 :(得分:0)
如@solarissmoke的评论所述,这是在wsgi处理程序中完成的,通过解析Cookies标头(来自属性environ['HTTP_COOKIES']
)。
常见的罪魁祸首可能是任何可以在途中修改请求的应用程序,从您的http /代理服务器到django中间件到您自己的视图代码。
在客户端设置cookie时的另一个常见失败点是标准cookie是特定于域的,并且浏览器具有允许/阻止在当前服务器域之外设置cookie的设置(例如,来自Response对象);甚至不允许任何饼干。以下是关于如何在任何平台上管理(和阻止)cookie的the Google Chrome documentation。
要进行调试,我建议您在应用的不同阶段记录(例如打印出)request.META(应包含HTTP_COOKIES
environ键)。您可以有条件地记录整个请求,如下所示:
import logging
logger = logging.getLogger('my_app')
def my_view(request):
if not request.COOKIES:
logger.error('Cookies empty! HttpRequest.META is: %s', dict(request.META))
如果会话cookie对您的应用程序至关重要,您当然应该处理客户端不允许存储cookie的情况,可能会显示错误页面。