使用Angular 5发送自定义标头

5
我正在尝试从前端应用程序发送一个自定义 HTTP 头,以便与网关进行交互。这是我的 Angular 函数:
import {Http, Headers, Response, RequestOptions } from@angular/http’;
getXById(id :number){
    let options = nee RequestOptions({ headers : new Headers({“X-fastgate-resource” :”resource_name}) });
    return this.http.get( http://url + “/resource”, options)

我原本期望看到一个标题,它的键是“X-fastgate-resource”,对应的值是“resource_name”。 但是我收到的实际信息是:
Request Headers:
   OPTIONS http://url HTTP/1.1
   host...
   Access-Control-Request-Headers: x-fastgate-resource 

OPTIONS请求是CORS所需的预检请求。如果返回了适当的状态,应该跟随一个GET请求。 - Explosion Pills
是的,如果您的请求由于CORS而被阻止,请检查您的控制台。 - Mirko Acimovic
3个回答

6
你可以尝试以下方法:
let headers = new HttpHeaders();
headers.append('X-fastgate-resource', 'Example');
let options = { headers: headers };
let apiUrl: string = 'http://url';

this.http.get(apiUrl, options);

希望这可以帮助到您。

2
尝试以下代码:

尝试这段代码:

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

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

**With params**

const url = 'yourapi';
return this.http.post(url, {
    key: value,
    key1: value1
},httpOptions);

**Without Params**

const url = 'yourapi';
return this.http.post(url,httpOptions);

0

尝试使用Angular Context。

Angular Context

这是我知道的最简单的传递数据的方法,通常用于拦截器。

  1. 定义上下文令牌 - 通常在拦截器中

    export const MY_FILENAME = new HttpContextToken<string>(() => "");
    
  2. 传递数据

    const context = new HttpContext().set(MY_FILENAME, `${name}.pdf`)
    return this.httpClient.post(url, pdf, {context: context})
    
  3. 收集数据。通常在拦截器中

    const fileName = request.context.get(MY_FILENAME)
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接