【问题标题】:Angular 8 - httpClient Get method transforms to Options methodAngular 8 - httpClient Get 方法转换为 Options 方法
【发布时间】:2020-03-05 21:01:11
【问题描述】:

我正在尝试将 Get 请求发送到我的服务器(Microsoft 2012)。我已经添加了this solution。但在这个解决方案中,我的 get 请求转换为 Options 方法。

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type': 'application/vnd.sas.datamgmt.jobflow.metadata+json; charset=utf-8',
    'Authorization': 'Basic' + btoa('username:password')
  })
};

我还补充了:

    httpOptions.headers.set('username', 'password');
    httpOptions.headers.append('Access-Control-Allow-Origin', '*');
    httpOptions.headers.append('Access-Control-Allow-Credentials', 'true');
    httpOptions.headers.append('Access-Control-Allow-Methods', 'GET,POST,OPTIONS');
    this.typesOfDBs = this.http.get<Info[]>(this.ROOT_URL, httpOptions);

我查看了我的请求,发现该请求现在是选项请求。如何处理它并将请求作为 Get 方法发送?

【问题讨论】:

标签: angular typescript angular8


【解决方案1】:

是的,当您从浏览器调用任何 API 时,它会调用 OPTIONS 来检查 API 是否真正可调用或服务器是否可以处理具有指定条件的请求。

如果在您的情况下选项调用成功,则浏览器必须调用具有 GET 方法类型的实际 API。

如果不使用 GET 方法类型调用,则标头可能会发送更多或更少的问题。

这种类型的请求适用于 Postman、fiddler 或 API 测试工具,但会给浏览器带来问题。

如果有任何拦截器尝试评论,我建议先检查标头,然后测试此 API。

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    这只是一个CORS问题,您需要在服务器端设置您指定的标头,而不是在发出请求的客户端

    【讨论】:

      【解决方案3】:

      我使用 nodejs 代理来解决这个问题。 Nodejs 很容易处理它。您必须从 Angular 向 nodejs 发送请求。并从 nodejs 恢复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-23
        • 2018-05-13
        相关资源
        最近更新 更多