我有一台运行在JavaScript上的服务器试图将用户名和密码发布到另一个运行django的网页上。我知道django要求你包含csrf令牌。我控制了服务器和代码,我想要实现的不是手动输入用户名和密码,我想使用JavaScript发布django。
假设django登录页面为“https://mayan/authentication/login/?next=/”,它有用户名密码文本框和提交按钮。因为我的JavaScript服务器上没有csrftoken,所以我选择禁用csrf令牌。在“urls.py”中,网址格式
url(r'^login/$', csrf_exempt(login_view), name='login_view')
我的理解是这会免除登录页面的csrf身份验证吗?但我需要能够使用post登录,
$.post({
url:"https://mayan/authentication/login/",
data:"username=admin&password=mypassword&next=/",
});
我发错了吗?还是我错误地豁免了csrf?因为我一直收到http状态码403 Forbidden。
编辑:
在我的login_view中,它从另一个视图调用方法登录,login方法也调用其他函数。我需要在“def login”之前添加“@csrf_exempt”,还是需要将其添加到每个函数中?将csrf_exempt添加到登录方法就足够了吗?