Django 通过swagger上载文件时csrf失败
我试图上传一个图像文件使用招摇它抛出 { “详细信息”:“CSRF失败:CSRF令牌丢失或不正确。” } 。值得一提的是,我使用的是django rest swagger版本0.3.0和django版本1.7 用于上传图片的YAML如下所示: 我不想使用@csrf\u豁免。我试着把头球传进去,但没用。标题类似于: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 () {
任何帮助都将不胜感激 首先,我不懂招摇,所以 如果在前端视图上使用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令牌。