角HttpClient不发送标头

角HttpClient不发送标头

这是我的代码:

import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';

logIn(username: string, password: string) {
    const url = 'http://server.com/index.php';
    const body = JSON.stringify({username: username,
                                 password: password});
    const headers = new HttpHeaders();
    headers.set('Content-Type', 'application/json; charset=utf-8');
    this.http.post(url, body, {headers: headers}).subscribe(
        (data) => {
            console.log(data);
        },
        (err: HttpErrorResponse) => {
            if (err.error instanceof Error) {
                console.log('Client-side error occured.');
            } else {
                console.log('Server-side error occured.');
            }
        }
    );}

在这里,网络调试:

Request Method:POST
Status Code:200 OK
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:46
Content-Type:text/plain

数据存储在‘RequestPayload’中,但在我的服务器中没有收到POST值:

print_r($_POST);
Array
(
)

我相信这个错误来自于在帖子中没有设置的标题,我所做的有什么不对呢?


郎朗坤
浏览 659回答 3
3回答

芜湖不芜

新的实例HttpHeader类不变物品。调用类方法将返回一个新实例作为结果。因此,基本上,您需要执行以下操作:let headers = new HttpHeaders();headers = headers.set('Content-Type', 'application/json; charset=utf-8');或const headers = new HttpHeaders({'Content-Type':'application/json; charset=utf-8'});更新:添加多个标头let headers = new HttpHeaders();headers = headers.set('h1', 'v1').set('h2','v2');或const headers = new HttpHeaders({'h1':'v1','h2':'v2'});UPDATE:接受HttpClient标头和params的对象映射自5.0.0-Beta.6现在可以跳过创建HttpHeaders对象直接传递对象映射作为参数。因此,现在可以做以下工作:http.get('someurl',{    headers: {'header1':'value1','header2':'value2'} });

慕斯709654

我和这个斗争了很长一段时间。我用的是角6,我发现let headers = new HttpHeaders(); headers = headers.append('key', 'value');不起作用。但起作用的是let headers = new HttpHeaders().append('key', 'value');是的,当你意识到它们是不可变的时候,这是有意义的。因此,在创建了一个标头之后,就不能将其添加到其中。我还没试过,但我怀疑let headers = new HttpHeaders(); let headers1 = headers.append('key', 'value');
打开App,查看更多内容
随时随地看视频慕课网APP