不存在跨域问题:如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./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
现在 a.com是a网站的。php是b网站的 a的数据我们可以通过 <script src="xxx.php?key=value&key2=value2" ></script> 把他发送上去。 然后呢在b网站上进行运算把返回的结果呢输出出来,,那么我在a网站上就可以调用到b网站的数据了。 jsonp:json + padding(内填充)
Js代码
jsonp.js Js代码
这样123就弹不出来了。 这个就是存在script标签执行的问题。 script标签是顺序执行的。 所以我们一定要把jsonp.js放到后面执行。
那么我们也可以动态的创建他 Js代码
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./2013-08/1375646780200263.html |
|