![](/img/trans.png)
[英]403 Forbidden Error when trying to post and put a axios request in a web app using Django and React
[英]403 Forbidden request when making an axios call with React (Django backend)
我正在尝试使用 ReactJS 在 web 应用程序上验证我的 session。我的后端设置在 Django 上。登录到应用程序时,我确实在 cookies 中收到 cookies,但是当 I6819 无法设置时尝试发布请求“withCredentials:true”,它返回 403 错误。
登录调用(我在响应标头中收到 cookies)
let url = `${BASE_URL}/login/`;
console.log('params for validateOtp:', params);
axios
.post(url, params)
.then((res) => {
console.log('validate otp code res: ', res);
resolve(res);
})
.catch((err) => {
console.log('validate otp code err: ', err);
reject(err);
});
查看控制台后,在“网络”选项卡下可以看到我确实从这个 API 收到了 cookies。
这是我进行身份验证调用的 API。
let url = `${BASE_URL}/updatemerchant/`;
axios
.post(url, params, {
withCredentials: true
}
)
.then((res) => {
console.log('updateDukaanUserToCloud res : ', res);
// resolve(res)
if (res.status === 200) {
resolve(res);
} else {
reject('updateDukaanUserToCloud something went wrong');
}
})
.catch((err) => {
if (err.response && err.response.status === 400) {
reject('updateDukaanUserToCloud updating user info failed');
} else {
reject('updateDukaanUserToCloud something went wrong');
}
});
设置.py
CORS_ORIGIN_ALLOW_ALL = False
CORS_ALLOW_CREDENTIALS = True
CSRF_COOKIE_NAME = "csrftoken"
CORS_ORIGIN_WHITELIST = ('http://localhost:3000', 'http://127.0.0.1:3000', 'localhost:3000', '127.0.0.1:3000')
CSRF_TRUSTED_ORIGINS = [
'localhost:3000',
'127.0.0.1:3000',
]
到目前为止,CSRF 令牌应该不是问题,因为您无法通过身份验证问题。 如果正确安装了 Django “会话身份验证”,只要从 React 传递了正确的凭据,并且在 Django 中调用了“登录”方法,它应该会自动附加 session cookie,您不需要在 React 中做额外的工作。
您是否添加了“django.contrib.sessions.middleware.SessionMiddleware”中间件?
PS 如果以后要使用 POST 请求,则需要附加 CSRF Token。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.