12

我正在尝试HttpClient在 Angular 5 项目中使用 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标头似乎不在我提出的请求中。

在此处输入图像描述

为什么是这样?

4

6 回答 6

9

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

让 headers = new HttpHeaders({
“内容类型”:“应用程序/json”
});
于 2018-05-13T08:52:10.490 回答
6

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

const _headers = new HttpHeaders();
const headers = _headers.append('Content-Type', 'application/json')
                        .append('...', '...')
                        .append('...', '...');
于 2018-03-01T18:54:43.853 回答
5

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

应该有2个“有问题的请求”。一个的 http 方法应该是 OPTIONS(您在此处显示的那个,它称为 preflight cors 请求)和一个实际的 POST(如果服务器允许您的客户端使用它)。如果主机与locahost:4200我假设的不同,那么您必须在服务器上为localhost:4200客户端启用 cors 请求。

于 2017-11-18T06:22:17.397 回答
-1

尝试这个:

var headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');
于 2017-11-17T17:38:13.153 回答
-1

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

ng build --production -host=yourDomain.com

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

于 2017-11-18T15:17:56.023 回答
-3
const httpOptions = {
        headers: new HttpHeaders({
          'Content-Type':  'application/json',
          'id':id
        })
      };          

注意:请将'id'作为'String'发送,观察以下修改

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

它工作正常。

于 2018-08-30T09:18:25.360 回答