本地webapp是怎么解决跨域问题的?

发布于 2022-09-04 04:44:57 字数 1133 浏览 16 评论 0

像ionic的cli,都可以把一个ionic的webapp打包成本地的,那这样的话是如何解决跨域问题的?

在PC上,我直接访问连接获取数据,代码如下。(抄自W3School)

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","http://www.w3school.com.cn/ajax/demo_get.asp",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">请求数据</button>
<div id="myDiv"></div>

</body>
</html>

在浏览器输入“file:///C:/Users/WINFIELD/Desktop/localinvoke/index.html”进行访问这个页面
在普通浏览器里点击按钮,是会发生跨域提示的,在设置了允许跨域的Chrome浏览器,数据可以正常返回,我理解的ionic打包(比如说打包成apk),肯定不会在这个apk里自带一个httpserver,那么应该也是类似于用这种文件路径的形式进行访问的,那么它如何解决跨域的问题的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2022-09-11 04:44:57

浏览器才存在跨域问题,而且浏览器是bs中的b端,和服务器没啥关系,js打包为原生应用无非是有个浏览器运行环境,也许直接关了跨域安全设置,也许和浏览器完全一样

羁拥 2022-09-11 04:44:57

楼上说到了,跨域是浏览器定的规则,PC端的浏览器大多都通过了同源策略(可能某些可怕的浏览器没有设置,如果真有应该是功能缺陷吧)。
但是移动端的网页是通过webview实现的,而webview实际上是通过file://协议来加载的网页(即:请求网页——网页到本地——webview加载),这个协议一般的移动端浏览器就没有实行同源策略了。

木森分化 2022-09-11 04:44:57

根据我自己用appcan/apicloud的经验,这些壳会提供类似ajax的js api,但实际上并不走xhr,所以也就更谈不上什么同源策略了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文