繁体   English   中英

在Angular 6中更改某些请求的Content-Type

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM