【问题标题】:How do you set global custom headers in Angular2?如何在 Angular2 中设置全局自定义标头?
【发布时间】:2016-04-02 19:50:38
【问题描述】:

我想在我对 Angular2 后端的所有请求中设置标头 Content-type: application/json。我在我的主要app.js 文件中使用它。

let headers = new Headers({
    'Content-Type', 'application/json'
})
class MyOptions extends BaseRequestOptions {
  headers: headers 
}

bootstrap(App, [
  provide(RequestOptions, {useClass: MyOptions}),
  ROUTER_BINDINGS,
  HTTP_PROVIDERS,
  bind(APP_BASE_HREF).toValue('/')
])

我希望 Http 的所有使用都使用新的内容类型,但此代码仍将内容类型设置为 text/plain

saveMaster (master) {
  return this.http
    .put(`${config.API_URL}/masters/${master._id}`, JSON.stringify(master))
    .map(res => res.json())
}

我必须手动设置每个请求的标头才能使其正常工作。我做错了吗?

注意:我想全局设置一个标头选项,不必像this solution 中的每个请求类型一样设置它。

【问题讨论】:

标签: http-headers content-type angular


【解决方案1】:
  1. MyOptions更改为:
class MyOptions extends RequestOptions {
  constructor() { 
    super({ 
      method: RequestMethod.Get,
      headers: new Headers({
        'Content-Type': 'application/json',
        'X-Some-Header': 'some-content'
      });
    });
  }
}
  1. provide(RequestOptions, {useClass: MyOptions}) AFTER HTTP_PROVIDERS(否则将使用默认BaseRequestOptions 代替您的MyOptions)。
bootstrap(App, [
  // ...
  HTTP_PROVIDERS,
  provide(RequestOptions, {useClass: MyOptions}) // <- after HTTP_PROVIDERS!!!
])

this plunk

【讨论】:

猜你喜欢
  • 2017-05-01
  • 2020-09-12
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多