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

首先什么是跨域,简单地理解就是因为JavaScript同源策略( Access-Control-Allow-Origin)的限制,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


请求字符串中一定要有“callback”的字符串,它定义了处理函数。如果这个值=?,jquery将自动生成一个随机函数。一定要不保证服务器返回的数据型如

callbackname(json)


jQuery.ajax方法:

            jQuery(document).ready(function(){
                $.ajax({
                    type: "get",
                    async: false,
                    url: "http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?",
                    dataType: "jsonp",
                    jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
                    jsonpCallback: "success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
                    success: function(json){                    
                        $("body").append(json.postalcodes[0].adminCode2);                        
                        
                    },
                    error: function(){
                        alert('failed');
                    }
                });
            });
Jquery.getJSON方法:
		 jQuery.getJSON("http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?", function(data){  
		 	alert(data.postalcodes[0].postalcode);
        }); 




网上也有人开发了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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值