【发布时间】:2016-04-19 18:17:23
【问题描述】:
我在 Django REST Framework 中使用 TokenAuthentication 来让脚本远程访问我的 API。运行 API 的域位于 TLS 证书后面。
在来到这里之前,我已经搜索了许多来源,并尝试了许多选项来找出我的问题所在。简而言之,当我尝试发帖时,我继续收到CSRF verification failed. Request aborted. 错误。
这是我的看法:
# @csrf_exempt
@api_view(['POST'])
@authentication_classes((TokenAuthentication,))
@permission_classes((permissions.IsAuthenticated,))
def create_object(request):
csrf_exempt 装饰器在这里什么也没做。所以,我也在我的urls.py上试过了:
url(r'^create_object/', csrf_exempt(views.create_object),),
我什至尝试编写自定义装饰器,并使用this suggestion。即使我这样做了,我什至似乎都无法在失败之前让该装饰器执行。也许我的中间件的排序有问题?
'sslify.middleware.SSLifyMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'corsheaders.middleware.CorsPostCsrfMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
这是我的 django cors 设置:
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = ('example.com',)
CORS_REPLACE_HTTPS_REFERER = True
【问题讨论】:
标签: django django-rest-framework django-csrf django-cors-headers