在第二个浏览器选项卡中打开 Django 1.10 应用程序会刷新 CSRF token 。这会破坏第一个选项卡中的所有表单——即,无法再提交以前打开的表单,因为旧的 CSRF token 现在无效。
我如何避免这种行为?
分步示例:
一些细节:
我真的很想在应用程序中允许多标签浏览。
Django 1.10 release notes 记录了对 CSRF 机制的更改:
Django 的 1.9 CSRF documentation 对可用性问题有很好的描述。这一段已在 1.10 CSRF documentation 中删除,但它似乎描述了我遇到的确切问题:
最佳答案
如果您在 View 中使用 @csrf_protect 装饰器,请尝试使用 @csrf_exempt 装饰器。
在 views.py 之前:
from django.views.decorators.csrf import csrf_protect
@csrf_protect
def view(request):
# Render Something
在 views.py 之后:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def view(request):
# Render Something
这么晚才回复很抱歉。
我希望迟到总比没有好。
关于django - 打开新的浏览器选项卡会使 Django 的 CSRF token 失效,从而阻止表单提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43296162/