是否可以将django csrf cookie设置为仅限http?类似于会话cookie的SESSION_COOKIE_HTTPONLY
,但对于csrf一个?
答案 0 :(得分:20)
Django 1.6 +中提供了新设置CSRF_COOKIE_HTTPONLY
。
答案 1 :(得分:11)
对于Django1.6 +,请检查接受的答案。对于Django1.5和prev,没有为此设置选项。
您可以覆盖process_response()
的{{1}}方法并使用自定义的方法,而不是django.middleware.csrf.CsrfViewMiddleware
中的CsrfViewMiddleware
MIDDLEWARE_CLASSES
或者在响应中class Foo(CsrfViewMiddleware):
def process_response(self, request, response):
response = super(Foo, self).process_response(request, response)
response.cookies[settings.CSRF_COOKIE_NAME]['httponly'] = True
return response
之后调用的另一个中间件
CsrfViewMiddleware
答案 2 :(得分:0)
如果您的版本低于1.6,您实际上可以自己修补Django文件以模仿更高版本中的功能。
补丁很简单,修改过的文件在这里可见:
https://github.com/django/django/commit/720888a14699a80a6cd07d32514b9dcd5b1005fb
Pictures showing the edits are provided in case github goes away.
您无需担心升级会覆盖这些内容,因为升级会自行包含这些内容。