在发送和接收带有axios的django数据时,我遇到了一个复杂的问题。我没有使用REST API。这是我的Handel函数,它与我的注册表单标记相关,每次单击提交按钮后,此函数执行:
HandelSignUp(e){
e.preventDefault();
let Username = this.refs.username.value;
let Pass = this.refs.pass.value;
let Email =this.refs.email.value;
axios({
url:'http://127.0.0.1:8000/signupAuth/',
mothod:'post',
data:{
username:this.Username,
pass:this.Pass,
email:this.Email
},
headers: {
"X-CSRFToken": window.CSRF_TOKEN,
"content-type": "application/json"
}
}).then(respons =>{
console.log(respons);
})
.catch(err =>{
console.log(err);
});
这也是我的django urls.py
:
urlpatterns = [
path('signupAuth/',ReactApp_View.signupRes),
]
ReactApp_View是我在ReactApp文件中的views.py
,我正确导入了它。好的,现在让我们看看我的views.py
:
def signupRes(request):
body_unicode = request.body.decode('utf-8')
data = json.loads(myjson)
return HttpResponse(request.body)
毕竟当我填写我的注册字段,然后点击按钮我在浏览器的控制台日志中看到这个按摩:
无法加载http://127.0.0.1:8000/signupAuth/:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,'http://localhost:8000'原产地不允许进入。
我该怎么办?
还有一个额外的问题:在我的axios中给定的URL会发生什么?
您必须在后端允许请求
CORS_ORIGIN_WHITELIST = (
'http://127.0.0.1:8000',
'http://localhost:8000'
)
要么
response["Access-Control-Allow-Origin"] = "*"
只需使用您尝试呼叫的同一主机网址打开您的网站即可。使用http://127.0.0.1:8000/而不是localhost