服务端解决跨域问题的方案(一)
转自: http://blog.csdn.net/james_wade63/article/details/50772041
跨域是指html文件所在的服务器与ajax请求的服务器是不同的ip+port,例如:
- ‘192.168.1.1:8080’ 与 ‘192.168.1.2:8080’是不同的域。
- ‘192.168.1.1:8080’ 与 ‘192.168.1.1:8081’是不同的域。
解决此类问题的方法很多,有需要客户端和服务端都要更改的,例如jsonp,iframe等等;有只需要客户端更改的,这种情况只能出现在hybrid app开发中,即通过调用native方法来进行网络请求;有只需要服务端配置的,下面介绍3种服务端配置的方法。
第一种
如果您使用的mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定。将@CrossOrigin加到Controller上,那么这个Controller所有的请求都是支持跨域的,代码如下:
@Controller
@CrossOrigin
public classGreetingController{
将@CrossOrigin加到请求方法上,那么这个请求是支持跨域的,代码如下
@CrossOrigin@RequestMapping("/greeting")public @ResponseBody Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {
- 1
- 2
- 3
更详细的@CrossOrigin介绍,请参看这里
第二种
全局配置,也需要spring4.2以上。
@Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurerAdapter() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");}};}
.addCorsMappings()中的参数代表支持跨域的url,.allowedOrigins()中的参数代表可以访问该接口的域名,设置为”*”可支持所有域。
第三种
这种方法就跟框架无关了,需要两个jar包,点击这里进行下载,两个jar包可以放的程序里,也可以放到tomcat中,然后将下面的配置写到web.xml中就可以了
<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>
服务端解决跨域问题的方案(一)相关推荐
- 服务端解决跨域问题的方案(二)
一分钟说明 本文主要基于Nginx的配置来解决服务端跨域问题. 涉及知识点: - Nginx的配置 Nginx的跨域配置 location /project {proxy_pass http://10 ...
- java 服务端 处理跨域_javaweb服务端跨域支持
项目开发为了支持web浏览器ajax的直接请求,涉及到了跨域的需求,通过学习对跨域有了更深入的认识,现在总结一下: 1.跨域说明 跨域指请求和服务的域不一致,浏览器和H5的ajax请求有影响,而对服务 ...
- ajax与微服务,微服务 - 如何解决跨域
什么是跨域问题? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对 JavaScript 施加的安全限制. 什么是同源? 所谓同源是指,域名,协议,端口均相同 htt ...
- java web 跨域_java web服务端CORS跨域配置
CORS介绍 CORS-CrossOrigin Resource Sharing,即跨域资源共享,它定义了一种服务器和浏览器的交互方式来确定是否允许跨域请求.CORS简单灵活,但有风险性,能实现aja ...
- thinkjs 解决跨域最优方案
如果在base.js 中设置跨域,如果请求在Logic这里效验不通过,前台就会报跨域错误. 最佳方案是在中间件里面设置跨域. 第一步 在config 的中间件配置里面,启用一个自定义中间件,这个可以是 ...
- 【javaWeb微服务架构项目——乐优商城day03】——(搭建后台管理前端,Vuetify框架,使用域名访问本地项目,实现商品分类查询,cors解决跨域,品牌的查询)
乐优商城day03 0.学习目标 1.搭建后台管理前端 1.1.导入已有资源 1.2.安装依赖 1.3.运行一下看看 1.4.目录结构 1.5.调用关系 2.Vuetify框架 2.1.为什么要学习U ...
- JAVA商城项目(微服务框架)——第7天nginx+cors解决跨域+品牌+分类查询
0.学习目标 使用资料搭建后台系统 会使用nginx进行反向代理 实现商品分类查询功能 掌握cors解决跨域 实现品牌查询功能 1.搭建后台管理前端 1.1.导入已有资源 后台项目相对复杂,我们不再从 ...
- 微服务架构(5):nginx反向代理cors解决跨域
微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...
- 解决跨域常见方案(is therefore not allowed access)
目录 什么是跨域: 跨域问题的产生原因: 什么标签可以跨域 几种解决跨域的常见方案 什么是跨域: 在同一网页中 访问多个不同域名下的接口获取数据,即不同域名或不同端口或不同协议的接口.这种现象就是跨 ...
最新文章
- 难点电路详解之负反馈放大器电路(1)
- python 列表 头部 尾部 添加元素
- Spring Boot 一般层级简介
- 3、excel数据格式设置快捷键
- linux下=号与==号
- 产品分析报告|读书新贵——《网易蜗牛读书》
- SAP常见问题与解决办法 2
- Python Django 查询数据缓存
- 面试题:如何编写一个杯子测试用例
- 做python开发要用多大的内存_Python 在分配内存需要考虑的问题
- Python:如何安装whl文件
- R语言实战:个人贷款违约预测模型
- insert同时添加两张表_Q语言——表的高级查询语言(一)
- iPad PPT演示录屏踩坑及后续ffmpeg处理
- CImageList-CBitmap-Usage
- 开启WIN10的卓越性能模式
- vue v-for循环表格 希望第四个<th>或<td>标签自动换到下一行应该怎么做?
- 台式电脑脑计算机没法启动怎么办,台式机主机电源灯不亮,开不了机怎么办? 台式电脑无法开机什么原因...
- KVM-虚拟化技术之Hypervisor-架构
- android 刘海屏适配方法
热门文章
- 【语言栏最小化到任务栏里面就消失不见了】
- 什么原因导致百度搜索比Google要少很多?
- Golang list双向链表源码走读
- 可有可无的Mysql工作技巧 2
- Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,
- PHP curl 直接获取请求变量,不直接输出
- HashMap、ConcurretnHashMap面试题详解,源码分析
- Hibernate自动创建表
- LinuxControlGroup(Cgroup)简介
- 有关代码段、数据段、BOSS段、堆、栈的存储位置问题。。。