Angular 5 - 无法为HttpClient设置标头

时间:2017-11-17 15:47:18

标签: angular angular-httpclient

我正在尝试使用Angular 5项目中的HttpClient进行POST调用,我想设置标题:

import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';

import { AuthData }    from './models/auth-data';

@Injectable()
export class AuthService {

    constructor(private http: HttpClient) { }

    auth = (data: AuthData) => {

        var url = "https://.../login";
        var payload = data;
        var headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8');
        var options =  {
            headers: headers
        };

        this.http.post(url, payload, options).subscribe();
    }
}

出于某种原因,Content-Type标题似乎不在我的请求中。

enter image description here

为什么会这样?

6 个答案:

答案 0 :(得分:6)

因为HttpHeaders是不可变的,我们必须分配它

const _headers = new HttpHeaders();
const headers = _headers.append('Content-Type', 'application/json')
                        .append('...', '...')
                        .append('...', '...');

答案 1 :(得分:6)

这对我有用。而不是追加。

let headers = new HttpHeaders({
'Content-Type': 'application/json'
});

答案 2 :(得分:4)

如果我看得正确,您向我们展示的是OPTIONS预检请求(CORS),而不是实际的POST请求。

应该有2个问题'。一个http的方法应该是OPTIONS(你在这里展示的那个,它叫做preflight cors请求)和一个实际的POST(如果服务器允许它为你的客户端)。如果主机与我认为的locahost:4200不同,那么您必须在服务器上为localhost:4200客户端启用cors请求。

答案 3 :(得分:-1)

试试这个:

var headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');

答案 4 :(得分:-1)

试试这个也有同样的问题;)

ng build --production -host=yourDomain.com

问题是该项目是在localhost上构建的,使用node,并保留这些默认的主机和端口信息,您可以在构建项目时更改它

答案 5 :(得分:-3)

const httpOptions = {
        headers: new HttpHeaders({
          'Content-Type':  'application/json',
          'id':id
        })
      };          

注意:请将“ id”作为“字符串”发送,请注意以下修改

 const httpOptions = {
        headers: new HttpHeaders({
          'Content-Type':  'application/json',
          'id':id+''
        })
      }; 

一切正常。