包含“ X-CSRFTOKEN”标头的Django其余框架,收到“ CSRF失败:CSRF令牌丢失或不正确”

时间:2018-10-11 04:14:30

标签: django react-native django-rest-framework react-native-ios

我目前正在创建一个与Django Rest框架后端交互的React Native ios应用程序。我通过后端进行身份验证,并将 csrftoken sessionid messages cookie存储在asyncStorage中。

我的后端视图是

class ItemList(generics.ListCreateAPIView):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer
    permission_classes = (IsAuthenticated,)

一个GET请求示例是:

axios({
    url:'https://myapi.com/api/items/',
    method: "GET",
    withCredentials: true,
    headers: {
     Cookie: mycookies,
}),...

POST请求示例为:

axios({
    url:'https://myapi.com/api/items/',
    method: "POST",
    withCredentials: true,
    headers: {
     Cookie: mycookies,
     'X-CSRFTOKEN': cookies.csrftoken.value
}),...

注意:mycookies是cookie的完整字符串,而cookie是javascript对象。这不是错字。

在我进行身份验证后不久,GET和POST请求均起作用。我可以从api检索和创建项目。但是,如果我退出Ios应用程序并重新打开,则POST请求将停止工作。 GET请求将返回200响应,但POST请求将返回403身份验证错误,并显示消息“ CSRF失败:CSRF令牌丢失或不正确”。

当我发送POST请求时,我确定csrftoken,sessionid和message cookie仍然正确,并且我检查了X-CSRFTOKEN标头是否与csrftoken cookie匹配。我认为csrftoken更改了POST请求,而我发送的XCSRF-TOKEN不正确。但是,如果是这种情况,则GET请求也不起作用。

任何帮助将不胜感激,谢谢。

0 个答案:

没有答案