通过swagger上传文件时csrf失败

时间:2015-08-04 14:01:19

标签: django swagger-ui

我正在尝试使用swagger上传图像文件

  

{     “detail”:“CSRF失败:CSRF令牌丢失或不正确。”     }

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

用于上传图片的YAML如下:

parameters:
    - name: image
      in: formData
      required: true
      type: file
    - name: caption
      required: true
      type: string

我不想使用@csrf_exempt。我试图将标题传递给此,但这不起作用。标题是这样的:

    - name: X-CSRF-Token
      description: csrftoken to be passed in header
      in: header
      required: true
      type: string

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:1)

我有同样的问题,如果你和Django约会,那只是一个名不副实的标题。

使用'X-CSRFToken'代替'X-CSRF-Token',这对我有用。

答案 1 :(得分:0)

首先,我不理解招摇,所以......

如果您在前端视图中使用html和jquery, 您可以在发布数据时使用此功能。

name

答案 2 :(得分:0)

不知道招摇,但是当使用jquery ajax我总是使用它:

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

希望有所帮助

答案 3 :(得分:0)

在模板中访问CSRF令牌。

{% csrf_token %}

在JavaScript模板中访问该令牌。

const token = $("input[name='csrfmiddlewaretoken']").val();

在调用API之前将其包含在标题中。

headers:{'X-CSRFToken': token}

希望它能解决错误。

答案 4 :(得分:-1)

删除整个csrv问题编辑视图

 Function DblMod(Dividend, Divisor)
' Declare two double precision variables
Dim D1 As Double
Dim D2 As Double
' Copy function arguments to local variables
D1 = Dividend
D2 = Divisor
DblMod = D1 Mod D2
End Function