下面说一下js 的跨域问题:
在不同的域名下面进行数据交互,存在跨域问题
那么
不需要存在跨域问题:如www.a.com/a.js和www.a.com/c/b.js
那么
存在跨域问题:
如:www.a.com和 b.a.com
如:www.a.com和 www.b.com即使是同一个ip地址也存在
ajax:XMLHttpRequest();不能跨域
子公司和跟其他公司合作的时候会存在跨域问题
可以解决跨域问题有7条:
1,document.domain = "a.com";
2,XMLHttpRequest代理文件
3,script标签,jsonp
4,location.hash
5.window.name
6,flash
7,html5:postMessage
一下逐一分析:
1,document.domain = "a.com"; 子域和主域 都设置下document.domain = "a.com";a.com主域名网址
2,不同域名下,通过服务器代理:在服务器那边做一个XMLHttpRequest 的代理文件。缺点:增大服务器的压力。。这个需要后台人员的处理。
3,script标签,jsonp格式
(单域操作)
他怎么能够做到跨域:如:
<script src="http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js" ></script>
网站是百度的,,src就是请求的地址,那么我们就可以通过在这个里面找到js进行运算。
所以script就不存在跨域问题,只要是返回的是js或者jsonp就不会有问题。
<script src="xxx.php" ></script>
src还可以请求其他的文件如xxx.php
php是b网站的
那么现在的a.com是a网站的。
a的数据我们可以通过
<script src="xxx.php?key=value&key2=value2" ></script>
把他发送上去。
然后呢在b网站上进行运算把返回的结果呢输出出来,,那么我在a网站上就可以调用到b网站的数据了。
jsonp:json + padding(内填充)
<script> function box(json){ alert(json.name); } </script> <script src="jsonp.js" ></script> 如果 <script src="jsonp.js" ></script> <script> function box(json){ alert(json.name); } </script> 就有问题了、存在js执行顺序的问题。 比如说: <script> function test(){ alert(123); } test(); </script> 这个没有问题。 那么 <script> test(); </script> <script> function test(){ alert(123); } </script>
jsonp.js
/*B网站的*/ box({name:"cnn"});
这样123就弹不出来了。
这个就是存在script标签执行的问题。
script标签是顺序执行的。
所以我们一定要把jsonp.js放到后面执行。
那么我们也可以动态的创建他
<script> function createJs(sUrl){ var oScript = document.createElement("script"); oScript.type ="text/javascript"; oScript.src = sUrl; document.getElementsByTagName("head")[0].appendChild(oScript); } createJs("jsonp.js?callback=box"); function box(json){ alert(json.name); } </script> <!--<script type="text/javascript" src="jsonp.js" ></script>-->
4,location.hash
双域操作
a网站嵌套b网站中的iframe
因为ie和chorme不支持
parent.location.hash=
所以我们可以
yyy.html#
parent.location.hash=self.location.hash
<iframe src="xxx.php#key1=value1&key2=value2"></iframe>
5.window.name
www.a.com/c1.html
c1.html有iframe标签
在自己的域里创建一个代理html
www.a.com/代理.html
www.b.com/c2.html:window.name ="数据";
6,flash
他有自己的处理方法
7,html5:postMessage
推荐:http://tech.ddvip.com/2013-08/1375646780200263.html
相关推荐
js跨域问题解决方案.
js跨域方法总结,对遇到js跨域问题的朋友有所帮助啊
能够完美解决arcgis js跨域解决问题,该文档详细说明了.NET或者java环境下跨域解决
java中处理vue.js跨域问题,把文件放在扫描目录下即可。
在浏览器查看一个pdf文件时常常不知道怎么显示,这个资源可以很好的帮到你,而且还附有跨域的解决办法。
NULL 博文链接:https://suhuanzheng7784877.iteye.com/blog/437154
还有使用动态加载js回调的方式,但是这个方式有一个问题,如果请求js页面无法控制或是需要get提交的数据比较大时,也无法解决. ajax post又不可以跨域, 目前可以比较好的解决方案是使用flash,但是它有二个不足,一需要...
javascript 跨域问题以及解决办法 什么是跨域问题? 跨域这个问题是由于浏览器的同源策略引起的,请求的URL地址,必须与浏览器的URL是相同协议、相同域名、相同端口的,否则是不允许访问的 浏览器URL 要访问的...
js跨域访问解决方案总结,不同域名下cookie相互操作
js跨域解决方案
本篇文章主要介绍了解决ajax不能访问本地文件问题(利用js跨域原理),具有一定的参考价值,有兴趣的可以了解一下。
通过这个插件,可以实现不同域名的双向通信问题,内含demo 配套文章:http://blog.csdn.net/mycwq/article/details/16344171
解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...
解决js的跨域问题
js跨域问题,是在一个域下的页面中通过js访问另一个不同域下的数据对象,出于安全性考虑,几乎所有浏览器都不允许这种跨域访问。 这并非是报表产品的问题,但是对于这种情况,报表目前有一种解决办法, 具体见附件。
JS跨域访问解决
主要介绍了NODE.JS跨域问题的完美解决方案,非常不错具有参考借鉴价值,需要的朋友可以参考下
JSP使用ajaxFileUpload.js实现跨域问题.docx