Angular HTTP GET在代码中不起作用,但URL在浏览器/邮递员中起作用

时间:2019-01-09 17:22:46

标签: angular http get cors

我还有另一个烦人的CORS问题...

我正在尝试通过将GET调用放置到其端点之一来查询USPS跟踪API。当我通过Postman和浏览器运行该URL时,该URL正在工作。

当我通过Angular代码尝试该请求并使用 ng serve 在本地对其进行测试时,我一直遇到CORS问题。

这是我执行GET请求的代码:

import {Injectable} from '@angular/core';
import * as builder from 'xmlbuilder';
import {HttpClient, HttpHeaders} from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class USPSService {

  constructor(private http: HttpClient) {

  }

  testTracking() {
    const body = builder.create('TrackRequest').att('USERID', '****')
      .ele('TrackID', {'ID': '9400100000000000000000'})
      .end({pretty: true});

    const headers = new HttpHeaders().set('Content-Type', 'text/xml').set('Access-Control-Allow-Origin', '*');

    return this.http.get('https://production.shippingapis.com/ShippingAPITest.dll?API=TrackV2&XML='
      + encodeURIComponent(body), {headers: headers});
  }
}

然后我调用该方法并订阅可观察对象并打印出结果数据。

但是当我通过Postman运行它并在浏览器中输入生成的URL时,它会正确执行并返回值。

https://secure.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML=%3C%3Fxml%20version%3D%221.0%22%3F%3E%3CTrackRequest%20USERID%3D%22854SHIPP1194%22%3E%3CTrackID%20ID%3D%229400100000000000000000%22%2F%3E%3C%2FTrackRequest%3E

您还可以在此处查看代码的实时版本:

http://shippy.willkara.com.s3-website-us-east-1.amazonaws.com/

在控制台中

。我需要在Angular中启用另一个标头吗?

0 个答案:

没有答案