我们网站设计有时候需要根据不同的业务需要设定分布式访问,并绑定不同的域名。这样做有诸多好处,可以分离出不同的业务,同时可以进行分布式部署。但这样就面临跨域访问问题,各大浏览器处于安全处于安全考虑禁止进行跨域访问。不过在html中有几个标签是不受跨域访问限制,script、iframe、link。解决跨域的问题目前有两种方法。
- 使用jsonp
通过传递callback函数名,返回callback函数调用语句,实现跨域访问。
- 使用cors
/* 是否允许跨域访问 */
response.setHeader("Access-Control-Allow-Origin", "http://www.google.com");
- swf实现跨域访问
需要在被访问站点的根路径上配置访问策略。
<cross-domain-policy>
<allow-access-from domain="*.google.com"/>
</cross-domain-policy>
- 跨源资源共享替代方案
JSONP方案,参考:http://en.wikipedia.org/wiki/JSONP#JSONP
使用Web代理,参考:http://developer.yahoo.com/javascript/howto-proxy.html
使用IFRAME,参考:http://msdn.microsoft.com/en-us/library/bb735305.aspx 和http://blog.joycode.com/saucer/archive/2006/10/03/84572.aspx
- 参考资料
http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
http://en.wikipedia.org/wiki/JSONP#JSONP
http://www.w3.org/TR/cors/
http://en.wikipedia.org/wiki/JSONP#JSONP
http://www.w3.org/TR/cors/
http://fangyuncn.blog.163.com/blog/static/174231499201071755813337/
/*设定同一个域名访问*/
(function(){
try{
document.domain = 'ps007.com';
}catch(e){
alert(e);
}
})();
try{
/*支持IE跨域访问*/
jQuery.support.cors = true;
}catch(e){
alert(e);
}