我正在使用我们的API服务器脚本创建API,并尝试与IONIC框架应用程序上的API进行通信.我正在工作,但它一直在提出跨源阻止错误:
在使用ionic serve
或ionic run/emulate -l -c
启用livereload进行本地开发时,ionic默认情况下会在端口8100创建本地开发服务器(http://localhost:8100/
).在origin
这种情况下是localhost:8100
,当你与CORS启用通过HTTP接触外部服务,他们认为请求不值得信任,为此拒绝.
正如Ionic自己(http://blog.ionic.io/handling-cors-issues-in-ionic/)所建议的,您可以在Ionic应用程序中创建一个代理别名来路由API调用,origin
完全避免这个问题,但是,他们的指南特定于Ionic 1,所以这里是Ionic v2的更新.
打开ionic.config.json
并添加以下proxies
设置.
{ "name": "project-name", "app_id": "xyz-projectid", "v2": true, "typescript": true, "proxies": [{ "path": "/api", "proxyUrl": "https://the-real-api-host.com" }] }
在这个例子中,我们在离子应用程序中创建一个路径/api
,它将请求转发到端点https://the-real-api-host.com
.例如http://my-custom-api.com/api/v2/
,如果您想使用不同的api端点,则可以将其插入proxyUrl
.
在您的应用程序代码,您现在需要在更新基本URL的API端点的所有引用https://the-real-api-host.com
用/api
./api
在Ionic服务时应检测到呼叫,并代理到真实地址.
每个项目实施可能有所不同 在我的情况下,我没有控制API,因为它是一个外部服务,所以我无法自己控制CORS处理/响应.
注意:记得重新启动服务器(ionic serve
),否则您将从API调用获得404,因为它尚未代理.