Angular 角度http post不发送头

Angular 角度http post不发送头,angular,angular2-routing,angular-http,Angular,Angular2 Routing,Angular Http,我正在尝试发送我的post请求的标题,但在我的请求中找不到任何标题。上述代码中哪里可能有错误。 以下是随附的chrome请求。 您附加的图像是选项请求,您的标题将显示在POST请求中 一旦选项请求获得授权,之后将发出post请求 问题是您提出的请求未经授权,请检查服务器端的代码,这不是角度的问题,代码是好的 它会起作用的。@Vivek的回答是正确的 请允许我更详细地介绍,以便您更好地了解正在发生的事情: 浏览器使用选项http谓词执行飞行前请求,这是XHR对象为确保允许其实际发出请求而发出的附加

我正在尝试发送我的post请求的标题,但在我的请求中找不到任何标题。上述代码中哪里可能有错误。 以下是随附的chrome请求。

您附加的图像是选项请求,您的标题将显示在POST请求中

一旦选项请求获得授权,之后将发出post请求

问题是您提出的请求未经授权,请检查服务器端的代码,这不是角度的问题,代码是好的


它会起作用的。

@Vivek的回答是正确的

请允许我更详细地介绍,以便您更好地了解正在发生的事情:

浏览器使用选项http谓词执行飞行前请求,这是XHR对象为确保允许其实际发出请求而发出的附加请求

除非您设置自定义标头,否则不会进行预飞行。当设置这些标头时,就像您对授权标头所做的那样,将执行选项请求。这一个不包括@Vivek在其响应中指定的海关标题。一旦您弄清楚端点没有响应飞行前请求的原因,并且该请求成功,您将看到带有基本身份验证凭据值的授权标头

这里是一个示例,我向一个虚拟api发出请求,所以您可以看到它在飞行前请求成功后工作。请参见
app.ts

您可以阅读更多关于飞行前请求的信息

看看chrome的网络监视器:


因此,只要修复api资源的任何错误,您的api就可以像@Vivek提到的那样正常工作。

您附带的图像是OPTION request,您的标题将显示在POST request中。
  private handleError (error: any) {
    // In some advance version we can include a remote logging of errors
    let errMsg = (error.message) ? error.message :
      error.status ? `${error.status} - ${error.statusText}` : 'Server error';
    console.error(errMsg); // Right now we are logging to console itself
    return Observable.throw(errMsg);
  }
  startCrawlJob(crawlvalues,username,password) {
    let headers = new Headers({ 'Accept': 'application/json' });
    headers.append('Authorization', 'Basic ' +
      btoa(username+':'+password));

    let options = new RequestOptions({ headers: headers });
    return this.http
      .post('http://localhost:8090/Crawler_p.html',crawlvalues, options).map(res =>

        res.json()

      ).catch(this.handleError);

  }