Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
1. 设置 document.domain为一致 推荐1
2. Apache 反向代理 推荐1
3. jsonp ,2
4. CORS ,2
5. iframe+post3
6. 回调解决方案>>服务端推送dwr 反向ajax3
7. 服务器中转 3
8. Js跨3
9. 从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案3
10. 参考4
1. 设置 document.domain为一致 推荐
2. Apache 反向代理 推荐
listen 80
NameVirtualHost *:80
<VirtualHost *:80>
#DirectoryIndex index.php index.Html index.html
# DocumentRoot D:\home_src\orderserver\public_html
# ServerName weixin.erdian.net
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /ati http://localhost:8080/ati
ProxyPassReverse /ati http://localhost:8080/ati
ProxyPass /ecs http://localhost:8081/ecs
ProxyPassReverse /ecs http://localhost:8081/ecs
</VirtualHost>
3. jsonp , .
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
4. CORS ,
如果我们要使用CORS,相关Ajax代码可能如下所示:
[html] view plain copy
1. var xhr = new XMLHttpRequest();
2. xhr.open("GET", "http://blog.csdn.net/hfahe", true);
3. xhr.send();
请注意,代码与之前的区别就在于相对路径换成了其他域的绝对路径,也就是你要跨域访问的接口地址。
2、 服务器
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。
HTTP 头的设置方法有很多,http://enable-cors.org/这篇文章里对各种服务器和语言的设置都有详细的介绍,下面我们主要介绍Apache和PHP里的设置方法。
Apache:Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要在Apache配置文件的<Directory>, <Location>, <Files>或<VirtualHost>的配置里加入以下内容即可:
[html] view plain copy
1. Header set Access-Control-Allow-Origin *
PHP:只需要使用如下的代码设置即可。
[html] view plain copy
1. <?php
2. header("Access-Control-Allow-Origin:*");
以上的配置的含义是允许任何域发起的请求都可以获取当前服务器的数据。当然,这样有很大的危险性,恶意站点可能通过XSS攻击我们的服务器。所以我们应该尽量有针对性的对限制安全的来源,例如下面的设置使得只有http://blog.csdn.net这个域才能跨域访问服务器的API。
[html] view plain copy
1. Access-Control-Allow-Origin: http://blog.csdn.net
5. iframe+post
6. 回调解决方案>>服务端推送dwr 反向ajax
加轮询
7. 服务器中转
8. Js跨
document.write(window.location.host);//localhost:8080
9. 从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案
使用案例
目前国外支持CORS的平台有很多,例如:
Google APIClient Library for JS
未来
从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案。无论是自己服务器间的跨域访问,还是开放平台为第三方提供API,都将采用这种统一的解决方案,因为它简单、高效,受到所有主流浏览器的支持。它非常重要,也会让我们的网络变得更加开放。
10. 参考
Atitit. Js 跨域回调解决方案的原理and实现最佳实践
HTML5安全:CORS(跨域资源共享)简介 - 蒋宇捷的专栏 - 博客频道 - CSDN.NET.htm