4

我决定开发一个使用公共 API 的应用程序,该 API 提供城市公共汽车和地铁的时间表。

我决定使用 HTML5 开发这个应用程序,以便通过使用 phonegap 之类的东西,我可以部署到多个平台。

在开发过程中,我发现由于xmlhttprequest-cannot-load 请求的资源上不存在“Access-Control-Allow-Origin”标头,我无法从 API 访问 JSON 响应

所以我决定使用一个普通的提供者网络空间作为一个带有 php 函数的桥梁,我将请求发送到该函数,并且能够从该 API 服务获取响应并将 JSON 结果发送回我的 HTML 页面。

我有两个问题,如果我在本机代码(java 和 ObjC)中开发应用程序,那么 Access-Control-Allow-Origin 的这个问题也会出现?

2)如果 HTML5 和 javascript 是由 phonegap 编译的,我仍然无法访问该 API 服务,我仍然会遇到同样的问题,我仍然需要使用 php 桥接器吗?

4

3 回答 3

3

1)如果我用本机代码(java和ObjC)开发应用程序,Access-Control-Allow-Origin的这个问题也会出现吗?

不,这是一项只有浏览器才能实现的安全功能。

2) 如果 HTML5 和 javascript 是由 phonegap 编译的,我仍然无法访问该 API 服务,我仍然会遇到同样的问题,我仍然需要使用 php 桥接器吗?

PhoneGap 确实设置了允许您访问所有主机的正确标头。它无法覆盖或修改响应服务器返回的标头。通常 API 端点确实设置了正确的标头,如果他们不这样做,您应该考虑告诉 API 所有者。

于 2014-05-19T19:02:15.460 回答
0

I had a similar issue trying to use an external API (supermarket api) and found when I actually uploaded my code to phonegap build and then downloaded it on the device, the http request was resolving.

于 2015-02-28T21:25:42.480 回答
0

可以将 URL-s 列入白名单,请参阅:http ://docs.phonegap.com/en/3.0.0/guide_appdev_whitelist_index.md.html

于 2014-09-18T11:16:43.123 回答