博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cors,跨域资源共享,Java配置
阅读量:5031 次
发布时间:2019-06-12

本文共 2899 字,大约阅读时间需要 9 分钟。

一、概念

1. 如果两个页面的协议、域名和端口是完全相同的,那么它们就是同源的,不同则为跨域

2. ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作。

3. 例子: 

http://www.abc.com/index.html 调用 http://www.abc.com/server.do (非跨域)http://www.abc.com/index.html 调用 http://www.def.com/server.php (主域名不同:abc/def,跨域)http://abc.abc.com/index.html 调用 http://def.abc.com/server.php (子域名不同:abc/def,跨域)http://www.abc.com:8080/index.html 调用 http://www.abc.com:8081/server.do (端口不同:8080/8081,跨域)http://www.abc.com/index.html 调用 https://www.abc.com/server.do (协议不同:http/https,跨域)请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

 

 

二、

1. 文档:http://software.dzhuvinov.com/cors-filter.html

2.  cors--->  Cross-Origin Resource Sharing  --->跨域资源共享

 

3. 添加依赖

com.thetransactioncompany
cors-filter
2.5
com.thetransactioncompany
java-property-utils
1.10

 

4. web.xml 添加如下代码:

CORS
com.thetransactioncompany.cors.CORSFilter
cors.allowOrigin
*
cors.supportedMethods
GET, POST, HEAD, PUT, DELETE
cors.supportedHeaders
Accept, Origin, X-Requested-With, Content-Type, Last-Modified
cors.exposedHeaders
Set-Cookie
cors.supportsCredentials
true
CORS
/*

 

5. 添加上面的过滤器,其实就是在返回的response中,添加如下header

response.setHeader("Access-Control-Allow-Origin", "*");          response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");          response.setHeader("Access-Control-Max-Age", "3600");          response.setHeader("Access-Control-Allow-Headers", "x-requested-with");

 

 

6. jquery请求也可以是AngularJS

$.ajax("url", {    type: "POST",       //A map of fieldName-fieldValue pairs to set on the native XHR object. For example, you can use it to set withCredentials to true for cross-domain requests if needed.       //XHR:XMLHttpRequest (XHR) ,基于XML技术的Http请求。设置本地XHR对象的“名-值”映射。例如,可以在需要时设置“withCredentials”为真而执行跨域名请求。       //withCredentials:  https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/withCredentials
   xhrFields: {        withCredentials: true,        useDefaultXhrHeader: false    },    data: {        type: "test"    },    dataType: 'json',    crossDomain: true,    success: function(data, status, xhr) {    	console.log(data);    }});

  

转载于:https://www.cnblogs.com/an5211/p/7149326.html

你可能感兴趣的文章
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>
函数式编程与参数
查看>>
flush caches
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
CTF常用工具之汇总
查看>>
java的面向对象 (2013-09-30-163写的日志迁移
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
NOJ——1568走走走走走啊走(超级入门DP)
查看>>
文件操作
查看>>
jquery基本选择器
查看>>