Javascript Django as API+;ReactJS-Redux:使用CSRF令牌发布请求,但仍未设置响应CSRF令牌

Javascript Django as API+;ReactJS-Redux:使用CSRF令牌发布请求,但仍未设置响应CSRF令牌,javascript,django,post,csrf,fetch,Javascript,Django,Post,Csrf,Fetch,环顾四周后,我想确定自己做得对,但我开始怀疑,最糟糕的是:我已经没有选择/想法了 因此,除了基类视图中的一个POST方法允许我的用户下载文件外,我使用django作为API(我只获取对某些资产的请求) 问题是django希望我的帖子上有一个CSRF令牌 下面是我在reactjs中所做的: export function sendData(endpoint, req, data) { return dispatch => { dispatch(requestData(data));

环顾四周后,我想确定自己做得对,但我开始怀疑,最糟糕的是:我已经没有选择/想法了

因此,除了基类视图中的一个POST方法允许我的用户下载文件外,我使用django作为API(我只获取对某些资产的请求)

问题是django希望我的帖子上有一个CSRF令牌

下面是我在reactjs中所做的:

export function sendData(endpoint, req, data) {
return dispatch => {
    dispatch(requestData(data));
    let csrfToken = Cookies.get('csrftoken');

    return fetch(endpoint, {
        method: req,
        headers: {
            'Content-Type': 'application/json',
            'X-CSRFToken': csrfToken,
        },
        body: JSON.stringify(data),
    })
    .then(checkStatus)
    .then(reponse => {
        console.log("Success!");
    }).catch(err => {
        err.response.json().then((json) =>{
            let { Errors, Result } = json;
            console.log('request failed: ', Errors, " ", Result);
        });
    });
};
})

如您所见,我正在使用“whatwg fetch”库。 我试图用
X-CSRF-Token
替换
X-CSRF-Token
,但请求被阻止到chrome“选项”,似乎没有正确发送:
飞行前响应中的访问控制允许标头不允许请求标头字段x-csrf-token。

但我还是发现了我一直在读到的错误:

CSRF验证失败。请求被中止。 失败原因: 未设置CSRF cookie

我错过了什么

在我看来,我尝试过各种装饰,甚至包括:

class DownloadAssetsView(ViewUrlMixin, ListView):
    @csrf_exempt
    def post(self, request, *args, **kwargs):
        print(request)
        return HttpResponse("coucou", status=200, content_type='application/json')
但是我不能让它工作


PS:django没有模板呈现到我的客户端,是的。

我们在项目中遇到了这个问题。csrf令牌用于阻止未知令牌和请求。如果您看到关于csrf令牌的文档,您可以找到它。csrf令牌阻止您对django服务器的外部请求。我们将react项目合并到django。它已修复。请尝试。我在这方面不是专家,但您可以检查一下。

您是对的,如果它不在同一个域上,它就不会工作。我很高兴我能帮上忙!