如何在Angular 4中获取HTTP请求标头?

时间:2018-03-01 06:14:42

标签: angular http-headers http-request-parameters

在互联网上,我看到只有像下面这样的HTTP请求添加参数。

  this.headers.append('Content-Type', 'application/json');
  this.headers.append('Accept', 'application/json');
  this.headers.append('Access-Control-Allow-Credentials', 'true');

我无法找到如何在Angular 4中获取HTTP请求标头参数。

2 个答案:

答案 0 :(得分:0)

如果这对于如今正在寻找此答案的人有用:

request.headers.forEach(h=> {
console.log(h);
console.log(request.headers.get(h));
})

每当请求为HttpRequest时,就会在控制台中显示所有标题名称及其对应的值。

我在拦截器内部使用它在我的angular 10应用中实现了V4签名,并且它正在ATM上运行。

您得到HttpHeaders {normalizedNames: Map(7), lazyUpdate: null, lazyInit: null, headers: Map(7)} 在开发人员工具中查看request.headers内容时,因为它是延迟加载的,但是,如果在运行我上面粘贴的代码后再次查看它,您应该在headers属性中看到所有现有的标头及其内容(应该与控制台上打印的内容相匹配。)

源:我在运行中的Angular 10应用程序中在控制台中尝试过,但在Http拦截器的拦截方法内的断点处暂停了。

答案 1 :(得分:-1)

Headers类还有一个get(name:string)方法,它返回一个字符串,以及检查标题的其他有用方法。来自Angular文档:

https://angular.io/api/common/http/HttpHeaders

class HttpHeaders {
  constructor(headers?: string | {...})
  has(name: string): boolean
  get(name: string): string | null
  keys(): string[]
  getAll(name: string): string[] | null
  append(name: string, value: string | string[]): HttpHeaders
  set(name: string, value: string | string[]): HttpHeaders
  delete(name: string, value?: string | string[]): HttpHeaders
}

您还可以使用浏览器的开发人员工具来检查请求/响应标头。

编辑:如果您确切地指定了您需要做什么,可能会有所帮助。是否需要检查特定的标题?

EDIT2:还有不推荐使用的Headers类。不确定你使用的是什么,但是在可用的方法方面有很多重叠,所以它甚至可能都不重要。

https://angular.io/api/http/Headers

class Headers {
  constructor(headers?: Headers | {...})
  static fromResponseHeaderString(headersString: string): Headers
  append(name: string, value: string): void
  delete(name: string): void
  forEach(fn: (values: string[], name: string | undefined, headers: Map<string, string[]>) => void): void
  get(name: string): string | null
  has(name: string): boolean
  keys(): string[]
  set(name: string, value: string | string[]): void
  values(): string[][]
  toJSON(): {...}
  getAll(name: string): string[] | null
  entries()
}