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

2023-05-16

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




兼容情况:

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

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


nginx增加类似如下配置:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  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增加类似如下配置:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CORS(跨域资源共享) 的配置 的相关文章

随机推荐

  • ROS话题queue_size的含义与设置技巧

    ROS1中发布和订阅话题时 xff0c 都需要设置queue size xff0c 参考 xff1a roscpp Overview Publishers and Subscribers ROS Wiki rospy Overview Pu
  • PHP Simple HTML DOM解析器使用入门

    http www cnphp info php simple html dom parser intro html 一直以来使用php解析html文档树都是一个难题 Simple HTML DOM parser 帮我们很好地解决了这个问题
  • app后端设计(4)-- 通讯的安全性

    在app 的后台设计中 xff0c 一个很重要的因素是考虑通讯的安全性 因此 xff0c 我们需要考虑的要点有 xff1a 1 在app 和后台 xff0c 都不能保存任何用户密码的明文 2 在app 和后台通讯的过程中 xff0c 怎么保
  • app后端设计(5)-- 表情的处理

    在app 的应用中 xff0c 文字中夹带表情是个很常见 xff0c 那么 xff0c 在后台处理表情的时间 xff0c 我遇到过下面两个问题 xff1a 1 表情在mysql 的存储 表情的utf8 编码 xff0c 有时是有4 个字节的
  • app后端设计(6)-- LBS

    在LBS的应用中 xff0c 一个基本的需求是查找附近的用户 xff0c 现在有两种做法 xff1a 1 使用mysql的空间数据库 xff0c 具体做法参考 xff1a http blog sina com cn s blog a48af
  • app后端设计--总目录

    做了3年app相关的系统架构 xff0c api设计 xff0c 先后在3个创业公司中工作 xff0c 经历过手机网页端 xff0c android客户端 xff0c iphone客户端 xff0c 现就职于app云后端平台bmob xff
  • app后端设计(7)-- 项目管理

    移动互联网行业是个快速发展的行业 xff0c 需求不断变化 xff0c 产品更新快 基于移动互联网的以上特点 xff0c 在开发产品的过程中 xff0c 我们放弃了传统的瀑布流开发模型 xff0c 引入了精益的理念和scrum 这个敏捷开发
  • app后端设计(8)-- 数据库分表

    当项目上线后 xff0c 随着用户的增长 xff0c 有些数据表的规模会以几何级增长 xff0c 当数据达到一定规模的时候 xff08 例如100万条 xff09 xff0c 查询 xff0c 读取性能就下降得很厉害 xff0c 这时 xf
  • app后端设计(9)-- 动态通知

    在app中 xff0c 例如在通知界面 xff0c 当新通知的时候 xff0c 需要显示有多少条通知 xff0c 用户点击 获取新通知 后 xff0c 就能看到新的通知 那么在app端 xff0c 怎么才能知道有多少条新通知 xff1f 实
  • app后端设计(10)--数据增量更新

    在新浪微博的app中 xff0c 从别的页面进入主页 xff0c 在没有网络的情况下 xff0c 首页中的已经收到的微博还是能显示的 xff0c 这显然是把相关的数据存储在app本地 使用数据的app本地存储 xff0c 能减少网络的流量
  • app后端设计(11)-- 系统架构(2014.12.05更新)

    个人认为 xff0c 在小型的创业团队中 xff0c 特别是以应用产品为主 xff0c 在架构后台的时候 xff0c 需要集中精力解决自身业务上的问题 xff0c 不是花时间解决第三方已经解决的问题 xff0c 简单点来说 xff0c 就是
  • 多机器人集群网络通信协议分析

    本文讨论的是多机器人网络通信各层的情况和协议 每个机器人连接一个数据传输通信模块 xff08 以下简称为数传 xff0c 也泛指市面上的图传或图数一体的通信模块 xff09 xff0c 数传之间进行组网来传递信息 根据ISO的划分 xff0
  • Nginx多虚拟主机下泛域名配置

    http www tuicool com articles F3Azuq 近上一个应用 xff0c 让用户可以自定义二级域名 xff0c 所以要配置一个泛域名来解析用户的自定义域名 首先来说说nginx下的泛域名配置 xff0c nginx
  • PHP集成支付宝快速实现充值功能

    http blog lixiphp com php alipay fast chongzhi axzz2wy4huhBm 本文将介绍如何快速通过PHP类库来集成 整合支付宝来实现充值功能 如果你的系统想要扩充积分 账户余额等功能 xff0c
  • 分布式定时任务框架——python定时任务框架APScheduler扩展

    http bbs 7boo org forum php mod 61 viewthread amp tid 61 14546 如果将定时任务部署在一台服务器上 xff0c 那么这个定时任务就是整个系统的单点 xff0c 这台服务器出现故障的
  • yii批量插入的方法

    code style margin 0px padding 0px border 0px font family none span class kwd style margin 0px padding 0px border 0px spa
  • MongoDB之DBref(关联插入,查询,删除) 实例深入

    http blog csdn net crazyjixiang article details 6668288 suppose I have the following datastructure var user 61 id 39 foo
  • MongoDB基本使用

    http www cnblogs com TankMa archive 2011 06 08 2074947 html 成功启动MongoDB后 xff0c 再打开一个命令行窗口输入mongo xff0c 就可以进行数据库的一些操作 输入h
  • 一个靠谱的phpredisadmin文件

    http download csdn net detail newjueqi 7227487
  • CORS(跨域资源共享) 的配置

    http blog csdn net ohyoyo2014 article details 24863197 兼容情况 xff1a 各种新版本的ie10 firefox opera safari chrome以及移动版safari和andr