web支持cors

场景:

客户端发出http请求,服务端对客户端的http请求进行验证

问题:

问题的表象是 从Chrome发出HTTP命令后,Chrome console中报 “Origin null is not allowed by Access-Control-Allow-Origin”错误。

产生原因:

这是由于Browser的same origin policy 限制的缘故。简单来说,从HTML中发出XMLHttpRequest  请求时,Browser会做检查,如果发现Response中没有Access-Control-Allow-Origin Header或Access-Control-Allow-Origin Header Header的值与 HTML的 orgin 不同时,Browser会拒接绝该Response,Javascript就收不到该Response。 本地HTML的Origin是 null, 而Server端没有发出Access-Control-Allow-Origin Header Header给Browser,  所以会有了“Origin null is not allowed by Access-Control-Allow-Origin”错误。

简单的说,就是由于客户端和服务端处于两个不同的域,相互之间是不允许通信的.

不同的域包含:1.静态文件向服务器请求 2.客户端和服务端域名不同 3.客户端和服务端端口不同 等等,个人理解总结的,不是很准确.

解决办法:

事实上有一个W3C标准,Cross Origin Resource Sharing (CORS) 专门用来解决这个问题的。目前的主流Browser也有支持。CORS 在HTTP Message 加入几个Header, Browser和 Server可以利用这些Header来判断对方是否是安全,是否可以通信。

http://enable-cors.org/  介绍了目前常用的服务器和技术的支持CORS的办法.其中对与JAVA Web,里面没提到.整理下让Java Web支持的办法.

Java Web支持的办法:

使用CORS Filter 解决.

下载地址:http://software.dzhuvinov.com/cors-filter.html

使用方法:http://software.dzhuvinov.com/cors-filter-installation.html 

参考文章

http://www.cnblogs.com/LevinJ/archive/2012/04/09/2439670.html

43 Things: CORS
BuzzNet: CORS
del.icio.us: CORS
Flickr: CORS
IceRocket: CORS
LiveJournal: CORS
Technorati: CORS

http://blog.163.com/user_zhaopeng/blog/static/16602270820126111524280/

文章目录
,