简体   繁体   English

Angular 8 - 如何向我的请求 header 添加 X-Auth-Token?

[英]Angular 8 - How to add to my request header a X-Auth-Token?

I'm working in the integration of a new API endpoint.我正在集成一个新的 API 端点。 As a security measure the endpoint expects in the post request headers:作为一种安全措施,端点期望在 post 请求标头中:

 'x-client-key': 'FRONTEND'

I have been looking around the net, but can't seem to find how to implement in my particular case.我一直在网上寻找,但似乎无法找到如何在我的特定情况下实施。

How could I add this in my request?我怎么能在我的请求中添加这个?

  getMagic(data) {
    return new Promise((resolve, reject) => {
      this.http
        .post(environment.serverUrl + this.getApiEndPoint() + 'get-magic', data)
        .subscribe(
          (response: any) => {
            resolve(response);
          },
          (err) => {
            console.log(err);
            reject(err);
          }
        );
    });
  }

This is what I've tried but doesn't work...这是我尝试过但不起作用的方法...

    const headers = new Headers().set('Content-Type', 'application/json').set('x-client-key',  'FRONTEND_CLIENT_KEY ');

    return new Promise((resolve, reject) => {
      this.http
        .post(environment.serverUrl + this.getApiEndPoint() + 'get-geocoding', data, { headers: headers })
        .subscribe(
          (response: any) => {
            resolve(response);
          },
          (err) => {
            console.log(err);
            reject(err);
          }
        );
    });
  }

I tried also我也试过

const headers = new Headers();
headers.set('Content-Type', 'application/json');
headers.set('x-client-key',  'FRONTEND_CLIENT_KEY ');

I assume that you're using Angular, not sure which version, so I'll write a solution for pre-7 and post-7 Angular:我假设你使用的是Angular,不确定是哪个版本,所以我会为pre-7和post-7 Angular写一个解决方案:

Angular 6 or below: Angular 6 或以下:

const headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Access-Control-Allow-Headers': 'Content-Type',
  'x-client-key': 'your key'
}

const requestOptions = {
  headers: new Headers(headers),
};

return new Promise((resolve, reject) => {
  this.http
    .post(environment.serverUrl + this.getApiEndPoint() + 'get-geocoding', data, requestOptions)
    .subscribe(
      (response: any) => {
        resolve(response);
      },
      (err) => {
        console.log(err);
        reject(err);
      }
    );
});

Angular 7 or later: replace the class Headers with a class HttpHeaders , docs here . Angular 7 或更高版本:将 class 标Headers替换为 class HttpHeaders此处提供文档

First, import the HttpHeaders class:首先,导入HttpHeaders class:

import { HttpHeaders } from '@angular/common/http';

And then refactor your code into:然后将您的代码重构为:

const requestOptions = {                                                                                                                                                                                 
  headers: new HttpHeaders(headers), 
};

Solution originally taken from here .解决方案最初取自这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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