Django 通过swagger上载文件时csrf失败

Django 通过swagger上载文件时csrf失败,django,swagger-ui,Django,Swagger Ui,我试图上传一个图像文件使用招摇它抛出 { “详细信息”:“CSRF失败:CSRF令牌丢失或不正确。” } 。值得一提的是,我使用的是django rest swagger版本0.3.0和django版本1.7 用于上传图片的YAML如下所示: 我不想使用@csrf\u豁免。我试着把头球传进去,但没用。标题类似于: 任何帮助都将不胜感激 首先,我不懂招摇,所以 如果在前端视图上使用html和jquery, 您可以在发布数据时使用此选项 w.getCsrfToken = function () {

我试图上传一个图像文件使用招摇它抛出

{ “详细信息”:“CSRF失败:CSRF令牌丢失或不正确。” }

。值得一提的是,我使用的是django rest swagger版本0.3.0和django版本1.7

用于上传图片的YAML如下所示:

我不想使用@csrf\u豁免。我试着把头球传进去,但没用。标题类似于:


任何帮助都将不胜感激

首先,我不懂招摇,所以

如果在前端视图上使用html和jquery, 您可以在发布数据时使用此选项

w.getCsrfToken = function () {
    // Extract CSRF token from cookies
    var cookies = document.cookie.split(';'),
        csrf_token = null;
    $.each(cookies, function (index, cookie) {
        var cookieParts = $.trim(cookie).split('=');
        if (cookieParts[0] === 'csrftoken') {
            csrf_token = cookieParts[1];
        }
    });
    return csrf_token;
};

删除整个csrv问题编辑视图

from django.views.decorators.csrf import csrf_protect
from django.template import RequestContext
from django.shortcuts import render_to_response

@csrf_protect
def any_function(request):
    csrfContext = RequestContext(request)
    return render_to_response('htmlpage', csrfContext)

我也有同样的问题,如果你是Django的最新版本,那只是一个错误命名的标题


使用“X-CSRFToken”而不是“X-CSRF-Token”,这对我来说很有效。

我不知道如何使用swagger,但在使用jquery ajax时,我总是使用以下方法:

$.ajaxSetup({
    data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});

希望它有助于在模板中访问CSRF令牌

{% csrf_token %}
const token = $("input[name='csrfmiddlewaretoken']").val();
在JavaScript模板中访问该令牌

{% csrf_token %}
const token = $("input[name='csrfmiddlewaretoken']").val();
在调用API之前,将其包含在标头中

headers:{'X-CSRFToken': token}

希望它能解决此错误。

您的HTML中是否有CSRF令牌标记?您是否解决了此问题?我也有同样的问题。这只是有文件上传的api的问题。所有其他api端点都可以正常工作。我不太了解swagger和yaml的情况,但我看到的是您正在将csrf令牌作为头传递。它只需要与formdata一起传递。name:csrfmiddlewaretoken value:get from cookie或表单inputsexperience遇到了与此类似的问题,结果是我返回了一个上下文实例而不是RequestContext,因此它无法访问存储在会话上的csrf令牌。