我正在尝试使用UPS的包裹等级API,并且能够在邮递员中使用它,但不能在网络浏览器中使用它。我知道邮递员不用担心CORS。
我有此发布请求:
getRate() {
return this.http.post(this.upsUrlTest, this.upsConfig, this.postOptions);
}
我的3个变量是:
upsUrlTest = 'https://wwwcie.ups.com/ship/1801/rating/Rate';
upsConfig = {...This is filled out and working in postman...}
postOptions = {
headers: new HttpHeaders({
transId: '0001',
transactionSrc: '##########', //Actual information is correct
AccessLicenseNumber: '########',
username: '#########',
password: '#########',
// These last two are where I believe the problem is
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'x-requested-with, x-requested-by',
})
};
奇怪的是,在得到CORS问题之前,我得到了404。我不确定我的格式化格式是否错误,或者这里是否还有其他问题。
另一个注意事项:我正在本地主机上运行此有角度的项目,但是将其放在服务器上时也会遇到相同的问题。
编辑:仅因为这与CORS有关,但这并不能使其与我的情况重复。在这种情况下,到建议的原件的链接就足够了。
答案 0 :(得分:1)
使用Angular,您需要在后端/目标URL中启用CORS策略。
默认情况下,在我的PHP项目中,我使用以下标头:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, PUT, DELETE, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, Authorization, X-Requested-With");
关于Angular的另一个有趣的事情是,在执行Http请求之前,它执行了一个称为“预检”的功能,无非就是检查目的地是否可以接收该请求。
(对不起,我的英语不好,我是巴西人,我在花时间练习我的语言)