移动应用程序的同源策略

3

我一直在研究这个问题,但是找不到令我满意的答案。

对于标准的网页浏览器,我非常了解同源策略。当我开始开发一个使用本地webview并使用jQuery的.load方法加载站点内容的移动应用程序时,我的问题出现了。通常在标准的网页浏览器中,我会得到一个XHR加载错误。

那么,关于原生应用和跨域策略,有哪些规定呢?


1
据我所知,该设备充当服务器的角色,并且可以从“任何”URL访问内容。如果您正在使用PhoneGap,则必须将您的域名添加到其白名单(或通配符)中。 - Robot Woods
我已经在Xcode和Eclipse中设置了访问来源,因此我知道需要访问Webview中的这些站点。你有相关文档吗? - HjalmarCarlson
1个回答

3
机器人伍兹绝对走在正确的道路上。处理本地应用程序时,您在某种程度上是从file://发出请求,而不是从https://发出请求。因为您没有跨HTTP协议进行请求,所以不适用相同的规则。当从您的本机移动应用程序进行请求时,您应该能够毫无问题地向任何域发出请求。
只需将域添加到PhoneGap/Cordova中的白名单中,如果您将整个页面替换为Webview中的正常内容,则需要进行此操作,但通常不会这样做(通常您只是从服务器请求数据块,而不是进行窗口位置更改)。

你说得没错,但如果服务控制起源并且不允许 file://模式怎么办?有没有办法从请求中删除来源? - Michael Burger
@MichaelBurger 你可能想在这个问题上开一个新的提问。听起来你所询问的问题背后可能有更多的细节,这些细节会帮助人们给出比评论更好的答案。 - Joshua
我已经做过了,也许你能帮忙吗?https://stackoverflow.com/questions/45758914/cordova-or-phonegap-http-requests-and-same-origin-policy-problems - Michael Burger
尝试了一下,虽然我对问题不是100%清楚。 - Joshua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接