为了账号安全,请及时绑定邮箱和手机立即绑定

角HttpClient不发送标头

角HttpClient不发送标头

郎朗坤 2019-07-09 13:31:21
角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 ( )我相信这个错误来自于在帖子中没有设置的标题,我所做的有什么不对呢?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

新的实例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'}
});


查看完整回答
反对 回复 2019-07-09
?
慕斯709654

TA贡献1840条经验 获得超5个赞

我和这个斗争了很长一段时间。我用的是角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');


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 658 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信