ajax跨域处理—-PHP跨域多域名同步登录技术前段篇

首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表:

URL 说明 是否允许通信
http://www.a.com/a.js
http://www.a.com/b.js
同一域名下 允许
http://www.a.com/lab/a.js
http://www.a.com/script/b.js
同一域名下不同文件夹 允许
http://www.a.com:8000/a.js
http://www.a.com/b.js
同一域名,不同端口 不允许
http://www.a.com/a.js
https://www.a.com/b.js
同一域名,不同协议 不允许
http://www.a.com/a.js
http://70.32.92.74/b.js
域名和域名对应ip 不允许
http://www.a.com/a.js
http://script.a.com/b.js
主域相同,子域不同 不允许
http://www.a.com/a.js
http://a.com/b.js
同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.js
http://www.a.com/b.js
不同域名 不允许

本表引用自:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

解决跨域访问页面对象的问题有6种方法,详见http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html。 本文仅介绍JQuery jsonp方法。

Jquery Jsonp

jQuery.ajax方法:

[javascript][/javascript]

view plaincopy

  1. jQuery(document).ready(function(){
  2.     $.ajax({
  3.         type: “get”,
  4.         async: false,
  5.         url: “http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?”,
  6.         dataType: “jsonp”,
  7.         jsonp: “callbackparam”,//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
  8.         jsonpCallback: “success_jsonpCallback”,//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
  9.         success: function(json){
  10.             $(“body”).append(json.postalcodes[0].adminCode2);
  11.         },
  12.         error: function(){
  13.             alert(‘failed’);
  14.         }
  15.     });
  16. });

Jquery.getJSON方法:

[javascript][/javascript]

view plaincopy

  1.         jQuery.getJSON(“http://local.yahooapis.com/LocalSearchService/V3/localSearch?appid=YahooDemo&query=pizza%20&zip=10504&results=2&output=json”, function(data){
  2.             alert(“Symbol: ” + data.ResultSet.totalResultsAvailable);
  3. $(“body”).append(data.ResultSet.totalResultsAvailable);
  4.         });

网上也有人开发了jquery.jsonp插件,大家也可以研究一下。

参考文献:

1, Cross-domain communications with JSONP, Part 1: Combine JSONP and jQuery to quickly build powerful mashups

http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

2, JQuery.ajax

http://api.jquery.com/jQuery.ajax/

3,  JQuery.getJSON

http://api.jquery.com/jQuery.getJSON/

4, JavaScript跨域总结与解决办法

http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

5, 跨域请求之jQuery的ajax jsonp的使用解惑

http://www.cnblogs.com/know/archive/2011/10/09/2204005.html

6, JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls

http://developer.yahoo.com/javascript/howto-proxy.html

标签