--转自 yoyiorlee
Firefox、Chrome等很多浏览器(IE除开)都不允许跨域请求或调用,折腾好久,终于解决了Ajax跨域请求这个蛋疼的问题,在网上也找了很久的资料,尝试N次都失败,今天在无意之中看到一篇跨域资源共享的文章,这让我轻松的解决了跨域问题,不多说。
跨域请求,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过
标签加载外部样式表文件、通过
标签加载外部图片、通过
标签加载外部脚本文件等等。默认情况下,脚本访问文档属性等数据采用的是同源策略(Same
origin policy)。
如果两个页面的协议、域名和端口是完全相同的,那么它们就是同源的。 如果两个页面的主域名相同,则还可以通过设置
document.domain 属性将它们认为是同源的。
随着
Web2.0 和 社交网络 的兴起,Web
应用对跨域访问的需求也越来越多,但是在脚本中进行跨域请求是受安全性限制的。比如分布式应用,主网站和二级域名网站的通信等等。
许多人还没意识到当前几乎所有的浏览器(Internet Explorer 8+, Firefox 3.5+, Safari 4+和
Chrome)都可通过名为跨域资源共享(Cross-Origin Resource
Sharing)的协议支持ajax跨域调用。 对一个简单的请求,没有自定义头部,要么使用GET,要么使用POST,它的主体是text/plain,请求用一个名叫Orgin的额外的头部发送。Origin头部包含请求页面的头部(协议,域名,端口),这样服务器可以很容易的决定它是否应该提供响应。
在IE8中也是一样,用同样的方式你需要使用XDomainRequest
object
varxdr=newXDomainRequest();
xdr.open("get","http://www.msnova.net/resource/");
xdr.οnlοad=function(){//do something};
xdr.send();
方法一:跨域资源共享(Cross-Origin
Resource Sharing)实现Ajax跨域请求(跨域资源共享,该规范地址:http://www.w3.org/TR/access-control/和http://dev.w3.org/2006/waf/access-control/)
1.在客服端写下面代码
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">AJAX跨域请求测试