利用cors,实现js跨域访问Tomcat下资源

第一步:页面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文件
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>  

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>

第一次写博客,有什么不好的地方,欢迎指导!

参考文献:

http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/

http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

http://ibleave60.blog.51cto.com/2669415/1208652

http://blog.csdn.net/liumm0000/article/details/8443550

转载于:https://www.cnblogs.com/chiyouguli/p/4283349.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理

数据类型获取int的字节数大小方法printf("int bytes:%d",sizeof(int));列表整理Int 与 long int的区别早期的C平台是16位int系统&#xff0c;int用二字节表示&#xff0c;范围是-32768~32767&#xff1b;long是long int的简写&#xff0c;用4字节表示&#xff0c;范围…

python求第n个质数_找到第n个质数:麻木

我试图用埃拉霍斯特内斯的筛子找到第n个质数。是的&#xff0c;我看到了类似的帖子&#xff0c;但是我对这段代码有一个问题。一旦找到第n个素数&#xff0c;我就停止算法。我写的是&#xff1a;def nth_prime(n):limit 10**2pn 1 #keeps track of how many prime numbers we…

python中浮点数能用乘法吗_简单讲解Python中的数字类型及基本的数学计算

Python有四种类型的数字:1.整型 a = 2 print a 2.长整型 b = 123456789 print b 3.浮点数 c = 3.2E2 print c 4.复数 复数为实数的推广,它使任一多项式都有根。复数当中有个“虚数单位”j,它是-1的一个平方根。任一复数都可表达为x+yj,其中x及y皆为实数,分别称为复数之“实…

c语言设计通讯录管理程序,C语言程序的设计学生通讯录管理系统方案.docx

include ustdio.hH include "stdlib.h” include "string.h" include "conio.h” include Mstdlib.hu ^define null 0 struct record{char namc[20];char phone[20J;char adress[40J;char postcodeflO];char c_mail[30];}sludcnt[500];struct LinkList{str…

*在通配符及正则表达式中的差别

*在通配符和正则表达式中有其不一样的地方&#xff0c;在通配符中*可以匹配任意的0个或多个字符&#xff0c;而在正则表达式中他是重复之前的一个或者多个字符&#xff0c;不能独立使用的。比如通配符可以用*来匹配任意字符&#xff0c;而正则表达式不行&#xff0c;他只匹配任…

python主成分分析实验报告_python进行主成分分析

数据&#xff1a;序号x1x2x3x414025202101.553031203135042504.518051203.59506101.512507401194082704136092803.51160101703960111803.514401213023050132201.51720141601.53560152202.514301614022020172202141018401100192011260201202200数据标准化&#xff1a;x1x2x3x40-…

c语言可以编制出功能复杂的程序,2018级《C语言程序设计》复习题及答案(5页)-原创力文档...

2014 C2014 C级《 语言程序设计》复习题及答案级《 语言程序设计》复习题及答案一、单项选择题一、单项选择题1 C (B )1、以下不是 C 语言的特点的是 (B )、以下不是 语言的特点的是A CA C、 语言简洁、紧凑、 语言简洁、紧凑BB、 能够编制出功能复杂的程序、 能够编制出功能复…

通知:即日起本博客暂停更新,请移步至yanxin8.com获取最新文章

通知&#xff1a;即日起本博客暂停更新&#xff0c;请移步至yanxin8.com与博主交流及获取最新文章 转载于:https://www.cnblogs.com/iplus/p/4467089.html

python修饰器原理_Python修饰器的函数式编程

Python的修饰器的英文名叫Decorator&#xff0c;当你看到这个英文名的时候&#xff0c;你可能会把其跟Design Pattern里的Decorator搞混了&#xff0c;其实这是完全不同的两个东西。虽然好像&#xff0c;他们要干的事都很相似——都是想要对一个已有的模块做一些“修饰工作”&a…

电影俱乐部c语言程序,C语言课程设计___电影俱乐部程序设计

《C语言课程设计___电影俱乐部程序设计》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言课程设计___电影俱乐部程序设计(22页珍藏版)》请在人人文库网上搜索。1、学 院: 专 业&#xff1a; 姓 名&#xff1a; 学 号&#xff1a;指导老师&#xff1a; 前 言 C语言…

[JavaScript] 函数同名问题

存在同名函数时&#xff0c;最后的函数会覆盖掉以前的同名函数。 1 var x 1,2 y z 0;3 function add(n) {4 return n n 1;5 }6 y add(x);7 function add(n) {8 return n n 3;9 } 10 z add(x); 11 console.log(x);//x值未变1 12 console.log(y…

湖北汽车工业学院c语言程序设计 汽车零部件采购管理程序,湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统).docx...

湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统)C语言课程设计  商品销售信息管理系统  #include  #include  #include  #include  structproduct//定义商品数据结构  {  intnum;//商品编号  charproductname[20];//商品名称  floatprice;//商品…

通信系统概论_现代通信系统概论 第一章 概述(1)

2020年&#xff0c;又开始上一门新课&#xff01;&#xff01;&#xff01;喜欢挑战&#xff01;让同学们开阔知识是本课程的主要目的&#xff01;本课程讲解导航、遥控遥测等军用尖端技术和数字电话、广播电视、综合信息网、多媒体宽带网等现代民用技术。通信在过去分为模拟通…

安装CentOS6.2操作系统

原创作品&#xff0c;出自 “深蓝的blog” 博客&#xff0c;欢迎转载&#xff0c;转载时请务必注明出处&#xff0c;否则追究版权法律责任。 深蓝的blog&#xff1a;http://blog.csdn.net/huangyanlong/article/details/40131523 说明&#xff1a;因为之前有相关安装文章能够查…

c语言100阶乘的代码,求10000的阶乘(c语言代码实现)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*程序功能&#xff1a;计算一个正整数n的阶乘&#xff0c;目前最大能运算10000的阶乘&#xff0c;可秒杀。程序意义&#xff1a;加强自己对于大数的处理。说明&#xff1a;此程序对乘法和除法还未做任何优化&#xff0c;如果用上位…

perl学习之:函数总结

一、进程处理函数 1、进程启动函数函数名 eval 调用语法 eval(string) 解说 将string看作Perl语句执行。正确执行后&#xff0c;系统变量$为空串&#xff0c;如果有错误&#xff0c;$中为错误信息。 例子 $print "print (\"hello,world\\n\");";eval ($pr…

jsp做看板_如何使用看板做敏捷开发

在软件开发实践和互联网的发展中&#xff0c;一直有新的工作方法论不断涌出&#xff0c;有不少的先行者在积极地探索着。敏捷方法和精益方法正是近十几年来&#xff0c;从这波潮流中涌现的最精彩夺目的两项成果。敏捷方法和精益方法的大伞&#xff0c;覆盖多种软件开发方法学&a…

在用c语言写代码是这么找出错误,写代码(C语言)常见粗心小错误

打码(C语言)常见粗心小错误标签(空格分隔)&#xff1a; 博客自我介绍本人学院 (http://sdcs.sysu.edu.cn/) 欢迎访问本人学号 16340213目录##1.前言小萌新们是不是经常打完码之发现程序运行达不到自己的效果&#xff0c;然后自己用大脑运行的时候发现完全没有问题&#xff0c;然…

Analyzer报表结果行

隐藏结果&#xff08;统计&#xff09;行 &#xff08;注&#xff1a;在Analyzer设置只是临时起作用&#xff0c;如果要使设置一直生效&#xff0c;则要通过Query Designer进行设置&#xff09; 显示多个值&#xff1a;如果结果只是由一条记录汇总得来的&#xff0c;则在该列上…

jeecg输入中文查询导表为空_简单查询

语法1.sql以 ; 结尾2.sql不区分关键字大小写3.输入符号时候只能使用英文4.列名不加引号基本查询语句1. select 列名,列名from 表名;2. select *from 表名;3. select 列名 as 列名重命名, 列名 as 列名重命名2from 表名;4. select distinct 列名from 表名;注意事项&#xff1a; …