Django api:CSRF豁免不起作用(在Apache上)

时间:2016-02-18 12:24:47

标签: django api django-rest-framework csrf django-csrf

我正在开发这个Android应用程序,它将图像上传到我在django上开发的网站。

我已使用django-rest-framework创建此api以上传文件。现在我需要使用Forms来保存图像(参见下面的代码)

@api_view(['GET', 'POST'])
def create_image(request):
    ImageModel = get_image_model()
    ImageForm = get_image_form(ImageModel)
    if request.user.is_authenticated():
        if request.method == 'POST':
            image = ImageModel(uploaded_by_user=request.user)
            form = ImageForm(request.POST, request.FILES, instance=image)
            if form.is_valid():
                image.file_size = file.size
                form.save()

但是它给出了错误CSRF verification failed. Request aborted.我已经尝试了@csrf_exempt,但仍然是同样的错误。

当我重新阅读Django-rest-framework的文档时,我发现THIS说:

  

请注意,如果使用mod_wsgi部署到Apache,则默认情况下不会将授权标头传递给WSGI应用程序,因为假定认证将由Apache处理,而不是在应用程序级别处理。

     

如果要部署到Apache,并使用任何非基于会话的   身份验证,您需要显式配置mod_wsgi来传递   所需的标题到应用程序。

因此,身份验证由Apache处理,而不是在应用程序级别。

0 个答案:

没有答案