【发布时间】:2017-06-09 18:10:55
【问题描述】:
通过ionic serve 和ionic run -l 与外部API 通信时遇到问题,基本上是使用本地服务器的任何东西。
我遵循了@http://blog.ionic.io/handling-cors-issues-in-ionic/ 指南,它提供了在 Ionic 1 项目中处理问题的选项,但我很难让它在 v2 项目中工作。
Fetch API cannot load https://test.api.promisepay.com/items/100fd4a0-0538-11e6-b512-3e1d05defe79/make_payment. Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.
我无法控制 API 如何处理这些请求,因为它由 PromisePay 控制。
在 StackOverflow 上关注最接近可能的解决方案:CORS with Firebase+IONIC2+Angularjs: No 'Access-Control-Allow-Origin' still exists
我已将ionic.config.json 更新为
{
"name": "project",
"app_id": "xxxxxxx",
"proxies": [{
"path": "/api",
"proxyUrl": "https://test.api.promisepay.com"
}]
}
在进行 http 调用的库中,我已将基本 URL 更新为 const PRE_LIVE_API = '/api';
请求方法如下:
let Requester = class Requester {
constructor() {
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
this.config = config;
const baseUrl = PRE_LIVE_API;
this.log(`API endpoint: ${ baseUrl }`);
this.client = _requestPromise2.default.defaults({
baseUrl: baseUrl,
auth: {
user: config.userName,
pass: config.token
},
headers: {
Accept: 'application/json',
Authorization: `basic ${ config.apiToken }`
},
resolveWithFullResponse: true
});
}
在调用最基本的 API 端点 /status/ 时,我现在收到以下错误:
"Error: Invalid URI "/api/status""
似乎没有通过代理路径。
【问题讨论】:
标签: javascript typescript ionic-framework cors