我在settings.py中注释掉了csrf处理器和中间件行。
122
123 TEMPLATE_CONTEXT_PROCESSORS = (
124 'django.contrib.auth.context_processors.auth',
125 # 'django.core.context_processors.csrf',
126 'django.core.context_processors.request',
127 'django.core.context_processors.static',
128 'cyathea.processors.static',
129 )
130
131 MIDDLEWARE_CLASSES = (
132 'django.middleware.common.CommonMiddleware',
133 'django.contrib.sessions.middleware.SessionMiddleware',
134 # 'django.middleware.csrf.CsrfViewMiddleware',
135 'django.contrib.auth.middleware.AuthenticationMiddleware',
136 'django.contrib.messages.middleware.MessageMiddleware',
137 'django.middleware.locale.LocaleMiddleware',
138 # Uncomment the next line for simple clickjacking protection:
139 # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
140 )但是当我使用Ajax发送请求时,Django仍然会响应'csrf令牌不正确或缺失‘,并且在将X-CSRFToken添加到headers之后,请求将会成功。
这是怎么回事?
发布于 2013-05-09 17:10:17
如果你只需要一些视图而不使用CSRF,你可以使用@csrf_exempt
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
return HttpResponse('Hello world')您可以在Django文档中找到更多示例和其他场景:
发布于 2016-10-12 15:57:10
要为基于类的视图禁用CSRF,以下方法适用于我。
我使用的是Django 1.10和Python 3.5.2
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
@method_decorator(csrf_exempt, name='dispatch')
class TestView(View):
def post(self, request, *args, **kwargs):
return HttpResponse('Hello world')发布于 2017-03-28 16:36:14
在中间件的setting.py中,您可以简单地删除/注释下面这一行:
'django.middleware.csrf.CsrfViewMiddleware',https://stackoverflow.com/questions/16458166
复制相似问题