像ionic的cli,都可以把一个ionic的webapp打包成本地的,那这样的话是如何解决跨域问题的?
在PC上,我直接访问连接获取数据,代码如下。(抄自W3School)
AJAX
在浏览器输入“file:///C:/Users/WINFIELD/Desktop/localinvoke/index.html”进行访问这个页面
在普通浏览器里点击按钮,是会发生跨域提示的,在设置了允许跨域的Chrome浏览器,数据可以正常返回,我理解的ionic打包(比如说打包成apk),肯定不会在这个apk里自带一个httpserver,那么应该也是类似于用这种文件路径的形式进行访问的,那么它如何解决跨域的问题的呢?
浏览器才存在跨域问题,而且浏览器是bs中的b端,和服务器没啥关系,js打包为原生应用无非是有个浏览器运行环境,也许直接关了跨域安全设置,也许和浏览器完全一样
楼上说到了,跨域是浏览器定的规则,PC端的浏览器大多都通过了同源策略(可能某些可怕的浏览器没有设置,如果真有应该是功能缺陷吧)。
但是移动端的网页是通过webview实现的,而webview实际上是通过file://协议来加载的网页(即:请求网页——网页到本地——webview加载),这个协议一般的移动端浏览器就没有实行同源策略了。
根据我自己用appcan/apicloud的经验,这些壳会提供类似ajax的js api,但实际上并不走xhr,所以也就更谈不上什么同源策略了。