我还有另一个烦人的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中启用另一个标头吗?