作为标题我不知道如何在我的打字稿文件中设置CSRF令牌,我是关于打字稿和CSRF令牌的初学者。
这是我用来发布信息的打字稿文件。
getUsers2() {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let body2 = {
site: this.selectedSite,
zone: this.selectedZone,
user: this.username,
categoryType: this.problemType,
ser: 'High',
conNo:'012-8888888'
};
this.http.post('http://localhost:8000/apidb/report/', JSON.stringify(body2), {headers: headers})
.map(res => res.json())
.subscribe(data => {
console.log("herererererere" ,data);
});
this.restProvider.getUsers2().then(data2 => {
this.locations = data2;
console.log(this.locations);
});
}
在我的setting.py中,我已经安装了中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
在我的views.py中,我不确定这是否正确
def report(request):
import pdb; pdb.set_trace()
if request.method == 'POST':
z1= site(country_site="New Penang Site")
site.save()
else:
return HttpResponse(request.method, content_type="application/json")
当我向我的API发布数据时,它向我显示未设置CSRF ..
任何人都可以向我提供有关此问题的任何教程或指南吗?谢谢!!
答案 0 :(得分:0)
您必须将CSRF令牌附加到HTTPrequest中发送的POSTdata(在本例中为body2 var)。您必须检查Django文档,了解他们在POST中寻找的名称(在Laravel,其中' _token')。
此POST var的值将通过回显页面顶部的令牌服务器端来设置(即var x =(CSRF令牌的服务器端回显);)