java设置access-allow_Java中设置多个Access-Control-Allow-Origin跨域访问
1、如果服务端是Java开发的,添加如下设置允许跨域即可,但是这样做是允许所有域名都可以访问,不够安全。
response.setHeader("Access-Control-Allow-Origin","*");
2、为保证安全性,可以只添加部分域名允许访问,添加位置可以在下面三处任选一个。
(1)可以在过滤器的filter的dofilter()方法种设置。
(2)可以在servlet的get或者post方法里面设置。
(3)可以放在访问的jsp页面第一行。
3、
在此用第一种方法,注意web.xml配置过滤器(filter)。
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
// 将ServletResponse转换为HttpServletResponse
HttpServletResponse httpResponse = (HttpServletResponse) res;
// 如果不是80端口,需要将端口加上,如果是集群,则用Nginx的地址,同理不是80端口要加上端口
String [] allowDomain= {"http://www.baidu.com","http://123.456.789.10","http://123.16.12.23:8080"};
Set allowedOrigins= new HashSet(Arrays.asList(allowDomain));
String originHeader=((HttpServletRequest) req).getHeader("Origin");
if (allowedOrigins.contains(originHeader)){
httpResponse.setHeader("Access-Control-Allow-Origin", originHeader);
httpResponse.setContentType("application/json;charset=UTF-8");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
httpResponse.setHeader("Access-Control-Max-Age", "3600");
httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");
// 如果要把Cookie发到服务器,需要指定Access-Control-Allow-Credentials字段为true
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
httpResponse.setHeader("Access-Control-Expose-Headers", "*");
}
chain.doFilter(req, res);
}
在此用第二种方法,可以在servlet的get或者post方法里面设置。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");//* 表示允许任何域名跨域访问
response.setHeader("Access-Control-Allow-Origin", "*");//指定特定域名可以访问
response.setHeader("Access-Control-Allow-Origin", "http:localhost:8080/");//数据
List studentList =getStudentList();
JSONArray jsonArray=JSONArray.fromObject(studentList);
String result=jsonArray.toString();//前端传过来的回调函数名称
String callback = request.getParameter("callback");//用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了
result = callback + "(" + result + ")";
response.getWriter().write(result);
}
(3)可以放在访问的jsp页面第一行
问题:
关于interceptor拦截器跨域response.addHeader("Access-Control-Allow-Origin", "*");不生效的情况
主要就是最上面的这行代码,当设置为“*”号的时候,我这边没有生效。
然后用的是,先取到发送过来的origin,然后将其放入header中。
String origin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
这样就成功了。
java设置access-allow_Java中设置多个Access-Control-Allow-Origin跨域访问相关推荐
- 关于flex开发中的跨域访问问题
1,一次偶然的机会碰到这个问题了,flex有跨域访问问题,但是,imgage.soure='其它域名地址是可以的'.能显示出来,为什么? 不是说有跨越访问的问题么,其实flash说的跨域访问问题,不是 ...
- java跨域解析json数据_java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据...
在开发的过程中,有时候我们需要设计一个数据接口.有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题. 第一步:简单的设计一个数据接口. 数据接口,听起来高大上,其实呢就是一个简单的Se ...
- 转载 - 通过设置P3P头来实现跨域访问COOKIE
作者:老王 网上看了别人介绍的一片文章,说使用P3P可以完成跨域COOKIE操作,感觉很COOL,不过没有提供源代码,我胡乱写了一下,大家看看. 实际工作中,类似这样的要求很多,比如说,我们有两个域名 ...
- ajax 设置Access-Control-Allow-Origin实现跨域访问
版权声明:本文为博主原创文章,未经博主允许不得转载.如需转载可私信或关注公众号fdipzone-idea与我联系. https://blog.csdn.net/fdipzone/article/det ...
- php accesscontrolalloworigin,设置Access-Control-Allow-Origin实现跨域访问
这篇文章主要介绍了Ajax 设置Access-Control-Allow-Origin实现跨域访问,非常不错,具有参考借鉴价值,需要的朋友可以参考下 ajax跨域访问是一个老问题了,解决方法很多,比较 ...
- Chrome浏览器设置跨域访问【新旧版本两种方式设置】
一般我们在进行前后分离的项目 webapp 开发,或者 H5 移动 App 开发时,我们会使用 PC 端浏览器进行开发调试.但默认情况下 Ajax 请求无法跨域访问,请求时会报如下错误: XMLHtt ...
- PHP接口允许ajax跨域访问设置方法(亲测)
背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the ...
- Vue之通过代理设置跨域访问
我们使用脚手架创建的项目,可以在config项目中看到 其中我们打开index.js文件 'use strict' // Template version: 1.3.1 // see http://v ...
- 允许跨域访问_PHP设置多域名允许跨域访问
php中文网最新课程 每日17点准时技术干货分享 针对 PHP 语言设置多域名允许跨域访问 服务器变量: 服务器变量存储在 $_SERVER 数组中,在这个数组中有一个特殊的键值:HTTP_ORIGI ...
最新文章
- C语言:5行代码解决 L1-045 宇宙无敌大招呼 (5分)
- Node.js Event loop 图解
- kafka介绍和集群环境搭建
- gdb调试程序函数名为问号,什么原因?step by step解决方案
- java (Eclipse)连接MySQL数据库
- 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~
- 2021第十二届蓝桥杯省赛B组原题答案及总结
- 单龙芯3A3000-7A1000PMON研究学习-(30)撸起袖子干-再来一杯代码11-内存初始化3-mc_init
- 公路通用复化辛普森公式匝道点位坐标计算4800源程序
- chrome浏览器如何设置黑色背景
- 格拉姆矩阵(Gram matrix)详细解读
- 计算机专业面试 英文,计算机专业面试英文自我介绍
- matlab调用CVX工具包
- 微信旧岛小程序章节目录
- 虚拟屏幕与云计算————微软亚洲研究院
- wpt eclipse 使用指南
- 通过cib.xml重新启动pacemaker
- 部署SDN控制器对接OVS网元实现转控分离实战 附ODL控制器
- Python中try 中有return,finally照样执行
- 最快的排序算法是什么
热门文章
- 通过IDM工具高速下载百度云大文件的方法
- Python使用mechanize模拟浏览器
- 使MFC窗口的最大化和最小化按钮消失
- 泰拉瑞亚12怎么远程连接服务器,泰拉瑞亚怎么远程联机
- 复选框(checkbox)积累
- 【零代码爬虫】如何使用webscraper插件爬取数据,以淘宝网为例
- 双非硕士 | 0实习 | 1个月上岸深信服售前产品经理提前批
- iOS中图形图像处理第一部分:位图图像原图修改
- 自学考试计算机等级考试,计算机等级考试报名到了,计算机自学考试要求考吗?...
- 远程访问服务器tensorboard