跨域资源共享问题 tomcat7.0配置CORS(跨域资源共享)
2017-06-25 21:46
786 查看
doGet/doPost 请求出现异常时,往往是这个问题
平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台):
已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')
这种情况就是跨域请求被阻止,这样可能会导致当前网站的css、js 、ajax请求、font字体等资源出现无法正常访问的问题,这时就涉及到“跨域资源共享”这个问题了。
以下列举跨域问题的几种情形:
如果是PHP等语言,这个问题貌似很好解决,只要一行代码就可以搞定,那么Java呢?如何在不修改代码的情况下,实现跨域资源共享?请往下看:
CORS(跨域资源共享)介绍:
CORS(Cross-Origin Resource Sharing) 跨域资源共享
全称:Cross-Origin Resource Sharing
中文意思:跨域资源共享
它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
Tomcat下的项目的配置:
首先需要下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个jar包;
然后配置工程项目中web.xml文件,配置信息如下:
[html] view
plain copy
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
原文地址(自己的博客,请多支持):tomcat7.0配置CORS(跨域资源共享)
平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台):
已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')
这种情况就是跨域请求被阻止,这样可能会导致当前网站的css、js 、ajax请求、font字体等资源出现无法正常访问的问题,这时就涉及到“跨域资源共享”这个问题了。
以下列举跨域问题的几种情形:
URL | 说明 | 是否允许通信 |
http://www.a.com/a.js http://www.a.com/b.js | 同一域名下 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js | 同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js | 同一域名,不同端口 | 不允许 |
http://www.a.com/a.js http://www.a.com/b.js | 同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://192.168.1.1/b.js | 域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://home.a.com/b.js | 主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://.a.com/b.js | 同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js http://www.a.com/b.js | 不同域名 | 不允许 |
CORS(跨域资源共享)介绍:
CORS(Cross-Origin Resource Sharing) 跨域资源共享
全称:Cross-Origin Resource Sharing
中文意思:跨域资源共享
它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
Tomcat下的项目的配置:
首先需要下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个jar包;
然后配置工程项目中web.xml文件,配置信息如下:
[html] view
plain copy
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
原文地址(自己的博客,请多支持):tomcat7.0配置CORS(跨域资源共享)
相关文章推荐
- tomcat7.0配置CORS(跨域资源共享)
- tomcat7.0配置CORS(跨域资源共享)
- tomcat7.0配置CORS(跨域资源共享)
- tomcat7.0配置CORS(跨域资源共享)
- tomcat下CORS(跨域资源共享) 的配置
- java服务端解决js跨域的问题 CORS(跨域资源共享) 的配置
- Java服务端Cors跨域资源共享配置,解决与Spring Security冲突引起的问题
- Java服务端Cors跨域资源共享配置,解决与Spring Security冲突引起的问题
- tomcat下CORS(跨域资源共享) 的配置
- tomcat下CORS(跨域资源共享) 的配置
- 跨域资源共享 CORS 详解以及IIS中的配置方法
- CORS(跨域资源共享) 的配置
- CORS(跨域资源共享) 的配置
- 跨域问题 XHR实现跨域资源共享(CORS)
- CORS(跨域资源共享) 的配置
- 跨域资源共享CORS以及在zepto中使用遇到的问题
- CORS(跨域资源共享) 的配置
- Apache中配置支持CORS(跨域资源共享)实例
- Apache中配置支持CORS(跨域资源共享)实例
- CORS(跨域资源共享) 的配置