SpringBoot2.x填坑(一):使用CROS解决跨域并解决swagger 访问不了问题
简介
公司后台是采用SpringBoot2.0 搭建的微服务架构,前端框架用的是vue 使用前后端分离的开发方式,在开发联调的时候需要进行跨域访问,那么使用CROS解决了跨域问题,但是swagger 却用不了 具体解决方案请继续往下看…
CROS跨域原理
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。现代浏览器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。
CorsConfig.java 配置
import com.boyang.dicloud.aop.CheckLoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {@Overridepublic void addCorsMappings(CorsRegistry registry) {// 设置允许跨域的路径registry.addMapping("/**")// 设置允许跨域请求的域名.allowedOrigins("*")// 是否允许证书 不再默认开启.allowCredentials(true)// 设置允许的方法.allowedMethods("*")// 跨域允许时间.maxAge(3600);}
}
Swagger 访问异常
原因分析:不能访问的原因的swagger的内置接口被拦截器拦下来了,需要将swagger加到拦截器的排除列表中。
CorsConfig.java 增加配置
@BeanCheckLoginInterceptor localInterceptor() {return new CheckLoginInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(localInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login").excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");}@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
完美解决!
贡献者
- IT实战联盟-Line
更多精彩内容可以关注“IT实战联盟”公众号哦~~~
SpringBoot2.x填坑(一):使用CROS解决跨域并解决swagger 访问不了问题相关推荐
- 跨域问题详解——九种解决跨域方法
跨域是前端再常见不过的问题了,下面主要针对跨域做一次总结,一次理清楚. 一.jsonp解决跨域 jsonp解决跨域问题的原理是:script不受同源策略的影响. //前端代码: <!DOCTYP ...
- 踩坑Gateway服务搭建、配置网关路由、路径重写和解决跨域问题(java类实现跨域)
由于项目需要,需要使用Gateway,话不多说直接干 引入依赖 <dependency><groupId>org.springframework.cloud</group ...
- java 跨域_springboot解决跨域CROS问题,用注解@CrossOrigin
项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...
- Web笔记-使用jsonp解决跨域请求(CROS)问题
目录 基本概念 代码与实例 基本概念 当我在某web站点,这个站点里面发出了像其他站点的请求(不同链接,或者同一链接的不同端口),是会失败的,因为是浏览器的安全检测问题,当然,这个只是主流浏览器的功能 ...
- 使用CROS解决跨域问题
使用CROS解决跨域问题 参考文章: (1)使用CROS解决跨域问题 (2)https://www.cnblogs.com/hackyo/p/7020507.html (3)https://www.c ...
- 第 6 讲 SpringBoot集成Cros解决跨域问题
第六讲 SpringBoot集成Cros解决跨域问题 文章目录 第六讲 SpringBoot集成Cros解决跨域问题 1.开发RestFul类型接口 1.1 配置pom.xml,引入依赖 1.2 ap ...
- SpringBoot解决跨域(CROS)问题
SpringBoot解决跨域问题(CROS) 问题: 前端请求后端出现下图类似问题: Access to fetch at 'http://localhost:8081/user/page?pageN ...
- 【node.js从入门到精通】编写接口,使用CROS解决跨域问题,jsonp的接口
目录 编辑 前言 1. get接口 2.post接口 2.跨域问题 1.CROS是什么 2.使用CROS解决跨域问题 3.CORS请求的分类 4.编写jsonp的接口 写在最后 前言 接口是前后端的 ...
- 解决跨域CROS问题
解决跨域CROS问题 以下方法选择其中一个即可 1.后端加注解 @CrossOrigin 在要跨域的方法上或类名上加注解@CrossOrigin即可 @CrossOrigin public class ...
- CROS实现跨域时授权问题(401错误)的解决
http://www.open-open.com/lib/view/open1463878276539.html 如果我们访问的资源是不需要授权的,也就是在HTTP请求头中不包含 authentica ...
最新文章
- filebeat.yml配置和logstash.conf
- php mysql 查询 区分大小写_MySQL查询字符串时区分大小写
- Spring Boot定时任务-Quartz基本使用
- Jenkins分层作业和作业状态汇总
- Spring Framework 3.2 M1发布
- Java通过反射执行方法
- Java实现统计某字符串在另一个字符串中出现的次数
- hdu 2609 How many(最小表示法)
- potato什么软件_曝光:诈骗数十亿的“张鹏”再出新项目美生在线,诈骗犯都这么努力,你还有什么资格不努力!?...
- 用科学计算机log21 p x,山东理工大学数据结构期末 试题及答案
- 灵山奇缘服务器维护,灵山奇缘1月8日更新了什么 灵山奇缘1月8日更新维护内容一览...
- linux主机独立显卡切换,Linux Deepin 2013 设置双显卡之关闭独显
- python2 之 DataFrame
- Required request body is missing:ParameterException解决方法
- 盐于律己,甜以待人(*╹▽╹*)
- linux机械硬盘提速,这方法让机械硬盘秒变固态硬盘:速度爆表
- jwt无状态权限认证(pings-shiro-jwt)
- CISC RISC ARM MIPS区别与联系
- OpenResty 在马蜂窝广告监测中的应用
- 求助如何写这种复杂的影射关系文件
热门文章
- Performance Engineering of Software Systems (四) ——工具使用
- ubuntu11.10 sources.list 资源
- Linux内核部件分析 设备驱动模型之device
- Linux中ELF格式文件介绍
- android gms包找不到,错误:包com.google.android.gms.appstate不存在
- 关于c++的return
- Web安全之SQL注入攻击技巧与防范
- 2014青岛初中组第2题 洪水 详解(C++)
- 考研 英语一 大作文-图画作文 (二)---第二段写作攻略
- php从数据库删除数据,php怎么从数据库中删除数据