Django 在DRF api上使用axios响应请求时抛出错误禁止(未设置CSRF cookie。)
这是我的代码:Django 在DRF api上使用axios响应请求时抛出错误禁止(未设置CSRF cookie。),django,reactjs,axios,csrf,Django,Reactjs,Axios,Csrf,这是我的代码: export function loginUser({ email, password }, history) { return (dispatch) => { axios({ url: URL_LOGIN_BASE, method: "POST", headers: { "Content-Type": "application/json", "Access-Control-Allow-Orig
export function loginUser({ email, password }, history) {
return (dispatch) => {
axios({
url: URL_LOGIN_BASE,
method: "POST",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
},
// withCredentials: true,
data: { "email": email, "password": password }
}).then(response => {
dispatch(setAuthentification(true));
history.push("/dashboard");
console.log(response);
}).catch(err => {
console.log(err);
});
};
}
这里是我的服务器配置(settings.py):
因此我有后端错误:禁止(未设置CSRF cookie):/
请注意,这个问题非常流行,但所有尝试的解决方案都不能解决我的问题。。。救命啊 您需要在请求头中添加
csrf
令牌
export function loginUser({ email, password }, history) {
return (dispatch) => {
axios({
url: URL_LOGIN_BASE,
method: "POST",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"X-CSRFToken" : "TOKEN FROM YOUR COOKIES"
},
// withCredentials: true,
data: { "email": email, "password": password }
}).then(response => {
dispatch(setAuthentification(true));
history.push("/dashboard");
console.log(response);
}).catch(err => {
console.log(err);
});
//下面的函数从cookies返回csrftoken
export const getCsrfToken = () => {
const csrf = document.cookie.match('(^|;)\\s*csrftoken\\s*=\\s*([^;]+)');
return csrf ? csrf.pop() : '';
};
请在问题中添加您的错误文本,不要添加图像,因为它可能在将来不可用,并且文本更易于参考。您提到所有尝试的解决方案都无法解决您的问题,您是否也可以将您已经尝试过的解决方案添加到您的问题中?通过这种方式,您可以为您的问题获得更好的答案,否则您将获得您可能已经尝试过的解决方案。我使用了“withCredentials=true”、凭据:“include”并添加axios.defaults.xsrfHeaderName=“X-CSRFToken”;axios.defaults.xsrfCookieName=“csrftoken”;下面介绍axios导入,但没有解决问题错误是:禁止(未设置CSRF cookie):/[11/Oct/2018 18:37:23]“POST/HTTP/1.1”403 2868谢谢,但它仍然不适用于我!我设置为:axios.defaults.xsrfHeaderName=“X-CSRFToken”;axios.defaults.xsrfCookieName=“csrftoken”;但在我的项目中使用csrf时,始终使用相同的后端响应。我只是简单地在标题中传递它。。axios.defaults.xsrfCookiaName.中没有任何内容。。查看我的更新答案,从cookiesOoops获取csrftoken!断然的。。。URL不正确。正确设置后,工作正常!!!
export const getCsrfToken = () => {
const csrf = document.cookie.match('(^|;)\\s*csrftoken\\s*=\\s*([^;]+)');
return csrf ? csrf.pop() : '';
};