转自: 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>   

服务端解决跨域问题的方案(一)相关推荐

  1. 服务端解决跨域问题的方案(二)

    一分钟说明 本文主要基于Nginx的配置来解决服务端跨域问题. 涉及知识点: - Nginx的配置 Nginx的跨域配置 location /project {proxy_pass http://10 ...

  2. java 服务端 处理跨域_javaweb服务端跨域支持

    项目开发为了支持web浏览器ajax的直接请求,涉及到了跨域的需求,通过学习对跨域有了更深入的认识,现在总结一下: 1.跨域说明 跨域指请求和服务的域不一致,浏览器和H5的ajax请求有影响,而对服务 ...

  3. ajax与微服务,微服务 - 如何解决跨域

    什么是跨域问题? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对 JavaScript 施加的安全限制. 什么是同源? 所谓同源是指,域名,协议,端口均相同 htt ...

  4. java web 跨域_java web服务端CORS跨域配置

    CORS介绍 CORS-CrossOrigin Resource Sharing,即跨域资源共享,它定义了一种服务器和浏览器的交互方式来确定是否允许跨域请求.CORS简单灵活,但有风险性,能实现aja ...

  5. thinkjs 解决跨域最优方案

    如果在base.js 中设置跨域,如果请求在Logic这里效验不通过,前台就会报跨域错误. 最佳方案是在中间件里面设置跨域. 第一步 在config 的中间件配置里面,启用一个自定义中间件,这个可以是 ...

  6. 【javaWeb微服务架构项目——乐优商城day03】——(搭建后台管理前端,Vuetify框架,使用域名访问本地项目,实现商品分类查询,cors解决跨域,品牌的查询)

    乐优商城day03 0.学习目标 1.搭建后台管理前端 1.1.导入已有资源 1.2.安装依赖 1.3.运行一下看看 1.4.目录结构 1.5.调用关系 2.Vuetify框架 2.1.为什么要学习U ...

  7. JAVA商城项目(微服务框架)——第7天nginx+cors解决跨域+品牌+分类查询

    0.学习目标 使用资料搭建后台系统 会使用nginx进行反向代理 实现商品分类查询功能 掌握cors解决跨域 实现品牌查询功能 1.搭建后台管理前端 1.1.导入已有资源 后台项目相对复杂,我们不再从 ...

  8. 微服务架构(5):nginx反向代理cors解决跨域

    微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...

  9. 解决跨域常见方案(is therefore not allowed access)

    目录 什么是跨域: 跨域问题的产生原因: 什么标签可以跨域 几种解决跨域的常见方案 什么是跨域:  在同一网页中 访问多个不同域名下的接口获取数据,即不同域名或不同端口或不同协议的接口.这种现象就是跨 ...

最新文章

  1. 难点电路详解之负反馈放大器电路(1)
  2. python 列表 头部 尾部 添加元素
  3. Spring Boot 一般层级简介
  4. 3、excel数据格式设置快捷键
  5. linux下=号与==号
  6. 产品分析报告|读书新贵——《网易蜗牛读书》
  7. SAP常见问题与解决办法 2
  8. Python Django 查询数据缓存
  9. 面试题:如何编写一个杯子测试用例
  10. 做python开发要用多大的内存_Python 在分配内存需要考虑的问题
  11. Python:如何安装whl文件
  12. R语言实战:个人贷款违约预测模型
  13. insert同时添加两张表_Q语言——表的高级查询语言(一)
  14. iPad PPT演示录屏踩坑及后续ffmpeg处理
  15. CImageList-CBitmap-Usage
  16. 开启WIN10的卓越性能模式
  17. vue v-for循环表格 希望第四个<th>或<td>标签自动换到下一行应该怎么做?
  18. 台式电脑脑计算机没法启动怎么办,台式机主机电源灯不亮,开不了机怎么办? 台式电脑无法开机什么原因...
  19. KVM-虚拟化技术之Hypervisor-架构
  20. android 刘海屏适配方法

热门文章

  1. 【语言栏最小化到任务栏里面就消失不见了】
  2. 什么原因导致百度搜索比Google要少很多?
  3. Golang list双向链表源码走读
  4. 可有可无的Mysql工作技巧 2
  5. Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,
  6. PHP curl 直接获取请求变量,不直接输出
  7. HashMap、ConcurretnHashMap面试题详解,源码分析
  8. Hibernate自动创建表
  9. LinuxControlGroup(Cgroup)简介
  10. 有关代码段、数据段、BOSS段、堆、栈的存储位置问题。。。