Angular 5如何移除HTTP请求中的默认Accept头?
移除Angular 5 POST请求中的默认Accept头
嘿,这问题我之前碰到过!Angular的HttpClient确实会自动给请求加上默认的Accept头,要去掉它其实很简单,只需要显式地把Accept头设置为空字符串就行——因为Angular会优先使用你显式设置的头值,覆盖掉框架自动添加的默认项。
你只需要修改你的jwt()方法,在创建HttpHeaders的时候加上'Accept': ''这一项,修改后的代码如下:
public jwt() { let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + currentUser.access_token, 'x-mol-lang': 'en', 'Content-Type': 'application/json', 'Accept': '' // 显式设置为空,覆盖默认的Accept头 }); return ({ withCredentials: true, headers: headers, reportProgress: true}); }
为什么这么做有效?因为Angular的HttpHeaders是不可变对象,当你显式定义某个头的时候,会完全替换掉框架自动添加的默认值。这样修改后,再发起POST请求,网络面板里就不会再出现那个默认的Accept: application/json, text/plain, */*头了。
如果这个方法意外没生效,你也可以试试用delete方法移除这个头,注意因为HttpHeaders不可变,所以要重新赋值给变量:
public jwt() { let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + currentUser.access_token, 'x-mol-lang': 'en', 'Content-Type': 'application/json' }); headers = headers.delete('Accept'); // 删除Accept头 return ({ withCredentials: true, headers: headers, reportProgress: true}); }
不过第一种直接设置为空的方式更直接可靠,优先推荐这个方案。
内容的提问来源于stack exchange,提问作者edrich13
相关产品推荐
相关产品推荐

