文章目录

  • 第二步:在tomcat服务器下webapps/ROOT目录下创建如下两个xml文件
    • 1. clientaccesspolicy.xml
    • 2. crossdomain.xml
  • 第三步:修改Tomcat服务器下conf/web.xml,或者项目WEB-INF/web.xml,

项目场景:

两个项目 ,同一域名不同端口 分别跑在同一台机器的两个tomcat中,构成跨域。

  1. 首先需要进行cros配置,详见下面说明(这里使用了cors-filter jar包方式)

  2. 意图跨域访问的请求不需要session验证:跨域访问在进行session验证时可利用请求头Referer参数判断请求来源,若是来自允许的域则直接通过。

完成后,前端可直接使用ajax post请求 跨域提取数据(测试浏览器:chrome).

第一步:页面js代码:

function createCORSRequest(method, url){var xhr = new XMLHttpRequest();if ("withCredentials" in xhr){xhr.open(method, url, true);} else if (typeof XDomainRequest != "undefined"){xhr = new XDomainRequest();xhr.open(method, url);} else {xhr = null;}return xhr;
}var request = createCORSRequest("get", "http://192.168.5.221:8080/");
if (request){request.onreadystatechange = function(){if (request.readyState == 4 && request.status == 200) {var response = request.responseText;console.log(response)}   request.send();
}

第二步:在tomcat服务器下webapps/ROOT目录下创建如下两个xml文件

1. clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8" ?>
<access-policy><cross-domain-access><policy>  <allow-from http-request-headers="*">  <domain uri="*"/>  </allow-from>  <grant-to>  <resource path="/" include-subpaths="true"/>  </grant-to>  </policy>  </cross-domain-access>
</access-policy>

2. crossdomain.xml

<?xml version="1.0"?>  <cross-domain-policy>  <allow-access-from domain="*" />  </cross-domain-policy>

第三步:修改Tomcat服务器下conf/web.xml,或者项目WEB-INF/web.xml,

我选择的是在项目下配置过滤器。我验证了两个,一个是tomcat下自带的cors过滤器,一个是cors-filter-1.7.jar下的过滤器。两个我都测试了,没问题。

应用tomcat的filter配置如下:参数cors.allowOrigin可以指定具体的源来访问

<filter><filter-name>CorsFilter</filter-name><filter-class>org.apache.catalina.filters.CorsFilter</filter-class><init-param><param-name>cors.allowed.origins</param-name><param-value>*</param-value></init-param><init-param><param-name>cors.allowed.methods</param-name><param-value>GET,POST,HEAD,OPTIONS,PUT</param-value></init-param><init-param><param-name>cors.allowed.headers</param-name><param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value></init-param><init-param><param-name>cors.exposed.headers</param-name><param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value></init-param><init-param><param-name>cors.support.credentials</param-name><param-value>true</param-value></init-param><init-param><param-name>cors.preflight.maxage</param-name><param-value>10</param-value></init-param>
</filter>
<filter-mapping><filter-name>CorsFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

或者应用cors-filter-1.7.jar,还需要java-property-utils-1.9.jar,可以在http://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter 选择某个版本导入pom.xml中,自动导入jar包。

配置如下:参数cors.allowOrigin可以指定具体的源来访问

<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>

Tomcat跨域访问(CROS)相关推荐

  1. [ecshop 经验 ]transport.js run error 68ecshop 小京东 火狐提示 同源策略和跨域访问 68ecshop

    transport.js run error 68ecshop 小京东 transport.js run error 68ecshop 小京东 火狐提示 同源策略和跨域访问  cros access ...

  2. 花生壳内网穿透+https+tomcat不能进行网页访问(二、跨域访问的问题)

    接上一篇写,现在出现了ajax跨域访问的问题. 网站有一项功能是将用户上传的数据与用户ID进行保存,用户ID是从session里用user=request.getSession().getAttrib ...

  3. Tomcat设置允许跨域访问

    开发React项目时前端通过axios向后端代码发起请求调试的时候由于后端代码运行在8080端口而React项目运行在3000端口导致浏览器的同源策略禁止跨域请求,因此需修改Tomcat配置文件web ...

  4. Ajax跨域访问Tomcat服务器

    在学习jQuery的时候进行到AJax时,需要与服务器进行交互练习.我毫不犹豫的打开了我的Tomcat服务器运行起来,并使用普通的ajax方法访问运行中的服务器网址的时候,发现 XMLHttpRequ ...

  5. 第一百一十期:详解SpringBoot应用跨域访问解决方案

    说到跨域访问,必须先解释一个名词:同源策略.所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同.Host(ip)相同.端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问 ...

  6. AJAX跨域访问解决方案

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

  7. 解决cookie跨域访问

    v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...

  8. cors 前后端分离跨域问题_SpringBoot 实现前后端分离的跨域访问(CORS)

    序言:跨域资源共享向来都是热门的需求,使用CORS可以帮助我们快速实现跨域访问,只需在服务端进行授权即可,无需在前端添加额外设置,比传统的JSONP跨域更安全和便捷. 一.基本介绍 简单来说,CORS ...

  9. [转]Ajax跨域访问问题-方法大全

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

最新文章

  1. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...
  2. Hadoop开发环境配置2-eclipse集成maven插件
  3. work php高性能,RabbitMQ之工作(Work)模式(PHP版)-Go语言中文社区
  4. scanf 输入加逗号(或者不加逗号)出现的异常及解决方案
  5. 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
  6. 用Python操作MySQL(pymysql)
  7. python实现范围框跟随_调整边界框的大小和位置,同时使其稍微居中
  8. 手慢无!小米5G手机已抢光
  9. OCS 2007 R2搭建后端SQL 2005企业版池
  10. 已在该编译单元中定义_LLVM中的pass及其管理机制
  11. 正商职业学校预付费云平台系统 的设计与应用
  12. 使用 ASP.NET 制作一个音乐网站
  13. JavaOOP项目 - 嗖嗖移动业务大厅
  14. 三星 android recovery,三星所有机型如何进入recovery模式的方法
  15. SCCM更新卡住恢复处理方法
  16. Windows10去除桌面快捷方式小箭头
  17. 两行代码激活windows系统
  18. 关于Ultraiso一直显示“设备忙”的解决办法
  19. GK 1424 L劳易测标签识别开关
  20. Vue3+TypeScript+Vite 学习笔记(持续更新中)

热门文章

  1. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...
  2. 仿冒公检法手机诈骗简析
  3. 职场新人必备的职场技巧
  4. python用for循环画多个图形_Python matplotlib读取excel数据并用for循环画多个子图subplot操作...
  5. 结构体的浅拷贝与深拷贝
  6. martian source packets(ll header)
  7. camx 马达的MSM_ACTUATOR_WRITE_DAC 操作
  8. Windows XP 启动过程详解
  9. Windows Server 安装docker
  10. canvas编写的dota版连连看 demo放出