CSRF令牌未设置..如何在Typescript中设置CSRF cookie?

时间:2017-12-07 01:45:38

标签: python json typescript django-csrf

作为标题我不知道如何在我的打字稿文件中设置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 ..

enter image description here

任何人都可以向我提供有关此问题的任何教程或指南吗?谢谢!!

1 个答案:

答案 0 :(得分:0)

您必须将CSRF令牌附加到HTTPrequest中发送的POSTdata(在本例中为body2 var)。您必须检查Django文档,了解他们在POST中寻找的名称(在Laravel,其中' _token')。

此POST var的值将通过回显页面顶部的令牌服务器端来设置(即var x =(CSRF令牌的服务器端回显);)