CORS(跨域资源共享) 的配置

匆匆过客 提交于 2019-12-11 22:17:57

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

http://blog.csdn.net/ohyoyo2014/article/details/24863197




兼容情况:

各种新版本的ie10,firefox,opera,safari,chrome以及移动版safari和android浏览器
ie9及一下版本请使用flash方式来兼容

通过OPTIONS请求握手一次的方式实现跨根域发送请求,需要服务端配置


nginx增加类似如下配置:

[html] view plaincopy在CODE上查看代码片派生到我的代码片

<EMBED id=ZeroClipboardMovie_1 height=18 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. server {  

  2.     location / {  

  3.         if ($request_method = 'OPTIONS') {  

  4.           add_header 'Access-Control-Allow-Origin' '*';  

  5.           add_header 'Access-Control-Allow-Credentials' 'true';  

  6.           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';  

  7.           add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';  

  8.          # add_header 'Access-Control-Max-Age' 1728000;  

  9.           add_header 'Content-Type' 'text/plain charset=UTF-8';  

  10.           add_header 'Content-Length' 0;  

  11.           return 200;  

  12.         }  

  13. }  


如果没有nginx转发,java需要如下代码:

[html] view plaincopy在CODE上查看代码片派生到我的代码片

<EMBED id=ZeroClipboardMovie_2 height=18 name=ZeroClipboardMovie_2 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=2&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. rundata.getResponse().addHeader("Access-Control-Allow-Origin", "*");  

  2. rundata.getResponse().addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");  

  3. rundata.getResponse().addHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With");  


tomcat下CORS(跨域资源共享) 的配置

CORS介绍
它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
而W3C的官方文档目前还是工作草案,但是正在朝着W3C推荐的方向前进。
简言之,CORS就是为了让AJAX可以实现可控的跨域访问而生的。

Tomcat下的配置
下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个库文件,放到lib目录下。(可在
http://search.maven.org上查询并下载。)工程项目中web.xml中的配置如下: 

[html] view plaincopy在CODE上查看代码片派生到我的代码片

<EMBED id=ZeroClipboardMovie_3 height=18 name=ZeroClipboardMovie_3 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=3&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">

  1. <filter>  

  2.     <filter-name>CORS</filter-name>  

  3.     <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>  

  4.     <init-param>  

  5.      <param-name>cors.allowOrigin</param-name>  

  6.         <param-value>*</param-value>  

  7.     </init-param>  

  8.     <init-param>  

  9.      <param-name>cors.supportedMethods</param-name>  

  10.         <param-value>GET, POST, HEAD, PUT, DELETE</param-value>  

  11.     </init-param>  

  12.     <init-param>  

  13.      <param-name>cors.supportedHeaders</param-name>  

  14.         <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>  

  15.     </init-param>  

  16.     <init-param>  

  17.         <param-name>cors.exposedHeaders</param-name>  

  18.         <param-value>Set-Cookie</param-value>  

  19.     </init-param>  

  20.     <init-param>  

  21.         <param-name>cors.supportsCredentials</param-name>  

  22.         <param-value>true</param-value>  

  23.     </init-param>  

  24. </filter>  

  25. <filter-mapping>  

  26.     <filter-name>CORS</filter-name>  

  27.     <url-pattern>/*</url-pattern>  

  28. </filter-mapping>  


http://software.dzhuvinov.com/cors-filter-installation.html

兼容情况:

各种新版本的ie10,firefox,opera,safari,chrome以及移动版safari和android浏览器
ie9及一下版本请使用flash方式来兼容

通过OPTIONS请求握手一次的方式实现跨根域发送请求,需要服务端配置


nginx增加类似如下配置:

 

  1. server {  

  2.     location / {  

  3.         if ($request_method = 'OPTIONS') {  

  4.           add_header 'Access-Control-Allow-Origin' '*';  

  5.           add_header 'Access-Control-Allow-Credentials' 'true';  

  6.           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';  

  7.           add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';  

  8.          # add_header 'Access-Control-Max-Age' 1728000;  

  9.           add_header 'Content-Type' 'text/plain charset=UTF-8';  

  10.           add_header 'Content-Length' 0;  

  11.           return 200;  

  12.         }  

  13. }  


如果没有nginx转发,java需要如下代码:

 


tomcat下CORS(跨域资源共享) 的配置

CORS介绍
它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
而W3C的官方文档目前还是工作草案,但是正在朝着W3C推荐的方向前进。
简言之,CORS就是为了让AJAX可以实现可控的跨域访问而生的。

Tomcat下的配置
下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个库文件,放到lib目录下。(可在
http://search.maven.org上查询并下载。)工程项目中web.xml中的配置如下: 

 

  1. <filter>  

  2.     <filter-name>CORS</filter-name>  

  3.     <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>  

  4.     <init-param>  

  5.      <param-name>cors.allowOrigin</param-name>  

  6.         <param-value>*</param-value>  

  7.     </init-param>  

  8.     <init-param>  

  9.      <param-name>cors.supportedMethods</param-name>  

  10.         <param-value>GET, POST, HEAD, PUT, DELETE</param-value>  

  11.     </init-param>  

  12.     <init-param>  

  13.      <param-name>cors.supportedHeaders</param-name>  

  14.         <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>  

  15.     </init-param>  

  16.     <init-param>  

  17.         <param-name>cors.exposedHeaders</param-name>  

  18.         <param-value>Set-Cookie</param-value>  

  19.     </init-param>  

  20.     <init-param>  

  21.         <param-name>cors.supportsCredentials</param-name>  

  22.         <param-value>true</param-value>  

  23.     </init-param>  

  24. </filter>  

  25. <filter-mapping>  

  26.     <filter-name>CORS</filter-name>  

  27.     <url-pattern>/*</url-pattern>  

  28. </filter-mapping>  


http://software.dzhuvinov.com/cors-filter-installation.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!