[英]How to Change the Content-Type of Angular5 - HTTP RequestOptions HEADERS
[英]Change Content-Type for certain requests in Angular 6
我有一个Angular 6应用程序,该应用程序对Node / Express服务器进行API调用。 我正在使用HTTP拦截器添加应用程序所需的几个标头,并且由于所有请求都需要JSON数据,因此它还将“ Content-Type”设置为“ application / json”。 新的标题如下所示:
newHeader = {
withCredentials : true,
headers: new HttpHeaders ({
'Content-Type': 'application/json',
'X_TOKEN_AUTH': authToken,
'X_IDUSER': user_id
})
};
但是现在我需要将图像上传到后端,因此服务器的路由之一必须期望非JSON数据进入主体。
我想做的是:
*在Angular应用中,将正确的标头添加到POST请求中,如下所示:
const url = `${SERVER_URL}/fileupload`;
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
return this.httpClient.post(url, formData, httpOptions)
*在HTTP拦截器中,检查请求是否具有“ Content-Type”标头。 在这种情况下,请使用它代替默认的“ application / json”。 在拦截器中,我已经在接收到的请求中记录了标头:
intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
[....]
console.log('HTTP REQ:', req.headers);
}
这是它打印的内容:
如您所见,与标题没有任何关系。 有什么事吗
提前致谢,
根据Eliseo的建议,这是我所做的:
let contentType = 'application/json';
// Check if the incoming request has an specific content type in the header
if (req.headers.has('Content-Type'))
contentType = req.headers.get('Content-Type');
现在,我可以使用contentType
为上传路由设置正确的标题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.