我是Django和React的新手,我试图创建auth系统。注册和登录在服务器端和客户端都工作正常,但注销一个没有。当我从React发送POST方法时,它说“**POST http://127.0.0.1:8000/user/logout 403(Forbidden)”**即使它在Django中工作
这是我在Django中的UserLogOutView
class UserLogOutView(APIView):
def post(self, request):
logout(request)
return Response(status=status.HTTP_200_OK)
然后是urls.py
urlpatterns = [
...
path('logout', views.UserLogOutView.as_view(), name='logout'),
]
接下来,我在react组件中通过axios发送POST方法。
const submitLogout = () => {
axios
.post(
"http://127.0.0.1:8000/user/logout",
)
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
});
}
const handleClickLogOut = (e) => {
e.preventDefault();
submitLogout();
props.onClose(false);
};
像这样使用它。
<form onSubmit={e => handleClickLogOut(e)}>
<button className='font-bold text-[20px]'>Log Out</button>
</form>
我还在该文件的Axios标头中设置了CSRF令牌。
axios.defaults.xsrfCookieName = 'csrftoken';
axios.defaults.xsrfHeaderName = 'X-CSRFToken';
axios.defaults.withCredentials = true;
有什么建议吗?
1条答案
按热度按时间t3psigkw1#
我查看响应,结果显示**{“detail”:“CSRF Failed:来源检查失败-http://127.0.0.1:3000不匹配任何可信来源。"}**
所以,我试着在www.example.com中添加这个setting.py,现在它工作了。