Quantcast
Channel: PayMoon贝明实验室
Viewing all articles
Browse latest Browse all 130

JAVA WEB支持CORS 跨域访问

$
0
0
平时在web项目开发中会经常遇到一些跨域操作,但由于由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),会造成Origin null is not allowed by Access-Control-Allow-Origin”错误。目前经常用于跨域操作的两个解决方案: JSONP和CORS(Cross Origin Resource Sharing )

问题原因

这是由于浏览器的同源策略限制的缘故,简单来说,从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”错误。

JSONP和CORS比较

  • JSONP 只能用于GET请求,并且有一定的安全隐患,因为JSONP的实现机制实际上类似于注入脚本
  • CORS Cross Origin Resource Sharing (CORS) W3C标准,专门用来解决跨域问题。支持各种形式的请求。由于这是比较新的标准,旧的浏览器会不支持。

CORS 原理

CORS 定义了一套Access-Control Header控制的标准, 定义以下头部信息,来控制是否允许跨域访问,什么样的请求能够跨域 [crayon-574c18315ba4c518723155/]

CORS 浏览器支持

QQ图片20160224130720.png 目前主流的浏览器大多都支持CORS,旧版的 IE7不支持。

Tomcat 下配置 CORS

Apache Tomcat 从7.0 版本之后才支持CORS,以下配置示例 [crayon-574c18315ba59732544796/] 详细的配置参数请参见: http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter 相关文档: http://enable-cors.org/ https://www.w3.org/TR/cors/

Viewing all articles
Browse latest Browse all 130

Trending Articles