SpringBoot2.0填坑(一):使用CROS解决跨域并解决swagger 访问不了问题

IT实战联盟 2018-12-21 14:12:36 ⋅ 606 阅读

简介

公司后台是采用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 {    @Override
public void addCorsMappings(CorsRegistry registry) {        
// 设置允许跨域的路径  registry.addMapping("/**")                
// 设置允许跨域请求的域名  .allowedOrigins("*")                
// 是否允许证书 不再默认开启  .allowCredentials(true)                
// 设置允许的方法  .allowedMethods("*")                
// 跨域允许时间  .maxAge(3600);    } }

Swagger 访问异常

原因分析:不能访问的原因的swagger的内置接口被拦截器拦下来了,需要将swagger加到拦截器的排除列表中。

CorsConfig.java 增加配置

    @Bean
    CheckLoginInterceptor localInterceptor() {        return new CheckLoginInterceptor();
    }    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/user/login")
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
    }    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

完美解决!

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    Spring Boot 解决问题的 3 种方案!

    作者:telami telami.cn/2019/springboot-resolve-cors/ 前后端分离大势所趋,问题更是老生常谈,随便用标题去google

    「尝鲜」SpringBoot 快速整合Swagger 3.0

    第一步:Maven引入Swagger3.0 starter依赖 Maven项目中引入springfox-boot-starter依赖: <dependency> <

    Linux 5.10.8 发布,最终解决 Btrfs 的性能问题

    Linux 内核 5.10.8 已经发布。作为 Linux LTS 5.10 系列的最新版本,此次更新解决 Btrfs 文件系统的性能问题。 Btrfs 是种支持写入时复制

    微服务架构实战篇:快速入手SpringBoot 2.0,欢迎入哦~~~

    SpringBoot 2.0 基本要求Java最低要求8以上,不再支持Java 6 和 7等低版本。

    「开源资讯」Atom 1.52.0 和1.53.0-beta0发布,平台文本编辑器

    Atom 同时发布 1.52.0 和 1.53.0-beta0 版本。Atom 是 GitHub 专门为程序员推出的一个平台文本编辑器。具有简洁和直观的图形用户界面,有很多有趣的特点:支持

    2018 国产开源软件新秀Kooteam 0.1.2 发布,解决低配服务器性能问题

    KooTeam是款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发,知识库管理等工具。

    消息队列常见问题(二):消息队列产生大量的消息堆积怎么解决

    节列举生产上消息队列产生大量的消息堆积会有哪些后果,那相对应的解决方法有哪些呢?1、消息被丢弃情况如果要实现防止消息过期问题,最好不要设置过期时间!那设置过期时间导致消息丢失怎么补救呢?答案

    Linux 下安装 Elasticsearch5.6.x 详细步骤以及踩解决方案

    网上有各种ES版本的安装步骤和问题解决方案,但是在安装过程中还是遇到许多问题,那么今天来整理份详细的安装过程以及碰到的问题和心得;有什么不对的和问题希望大家留言一起讨论。

    【开源资讯】Spring Boot 2.4.0.M4 发布

    Spring Boot 2.4.0 的第四个里程碑版本发布,可以从里程碑仓库获取。此版本包含 145 项更新内容,亮点如下:1、改进故障分析器(Failure Analyzer

    IntelliJ IDEA 开启很慢,运行流畅,大项目卡顿?招配置解决

    来源:Java面试题精选 、前言 IDEA默认启动配置主要考虑低配置用户,参数高(默认最低128m,最高512m),导致启动慢,然后运行也流畅,这里我们需要优化下启动和运行配置;但是在工作中

    【开源资讯】TypeScript 4.0.5 发布

    TypeScript 4.0.5 发布,本次更新主要解决 4.0 版本以来出现的一些问题,提高整体的稳定性。详细更新如下:BUG 修复1、解决对于版本 4.0,创建可释放程序包删除

    Redis 5.0.11、6.0.11、6.2 发布,修复 32 位系统上的整数溢出

    Redis 同时发布 5.0.11、6.0.11 和 6.2 版本。对于使用 32 位 Redis 的用户来说,此次更新解决一个重要的安全问题,即 32 位系统上的整数溢出((CVE-2021

    TestableMock v0.6.0 发布,新增测试参数快速构造工具

    项目介绍 TestableMock是款由阿里效能团队开源的Java单元测试增强工具,提供四项具有针对性的辅助能力: 快速Mock任意调用:解决传统Mock工具使用繁琐的问题 访问被测类私有成员

    Android 12 开发者预览版 2.2 发布

    上月底,Google 发布 Android 12 DP 2.1,解决 WebView 崩溃的大问题。目前,开发者预览版 2.2 已经向运行 Android 12 的 Pixel 手机正式推出

    Fes.js v0.4.1 版本发布,套优秀的中后台系统前端解决方案

    Fes.js 是套优秀的中后台前端解决方案。提供初始项目、开发调试、Mock接口、编译打包的命令行工具。内置布局、权限、数据字典、状态管理、存储、Api等多个模块。以约定、配置化、组件化的设计思想

    HashiCorp开源Boundary:安全访问动态主机服务

    HashiCorp 宣布开源 Boundary,此项目可帮助运维人员及从业者通过细粒度的授权安全地访问动态主机和服务,无需管理凭据或公开网络。 Boundary 旨在使用最小特权原则 (POLP

    大数据量下 MyBatis PageHelper 分页查询性能问题解决办法

    前因 项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题。随着业务扩增,数据库扩增PageHelper出现明显的性能问题。 几十万甚至上百万的单表数据查询性能缓慢

    【SpringCloud实战】次开发中使用Feign添加动态Header问题思考

    一个Spring Cloud Feign添加自定义Header的,分享给大家

    微信小程序实战篇:如何解决https域名问题

    开发自己的微信小程序绕开https问题,为了能在小程序中调用我们自己的API服务请打开看看吧!!!