前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot 拦截器导致 @CrossOrigin 跨域失效的解决方案

Springboot 拦截器导致 @CrossOrigin 跨域失效的解决方案

作者头像
JAVA葵花宝典
发布2021-01-03 15:46:44
3.4K0
发布2021-01-03 15:46:44
举报
文章被收录于专栏:JAVA葵花宝典

原因:

CROS 复杂请求时会首先发送一个 OPTIONS 请求做嗅探,来测试服务器是否支持本次请求,请求成功后才会发送真实的请求;而 OPTIONS 请求不会携带数据,导致这个请求被拦截了,直接返回了状态码,响应头中没携带解决跨域问题的头部信息,出现了跨域问题。

方法一:

因此解决方案是把所有的 OPTIONS 请求统统放行。详细分析见:https://blog.csdn.net/MrKorbin/article/details/104066979

在 preHandle 加以下内容:

代码语言:javascript
复制
if("OPTIONS".equals(request.getMethod().toUpperCase())) {
            return true;
        }

方法二:

不使用 @CrosOrigin 注解解决跨域问题,使用过滤器:示例使用 CorsFilter,也就是一个封装了解决跨域问题的 filter 而已。

代码语言:javascript
复制
package com.pacmp.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * @Author 
 * @Date 2020/6/19 15:48
 * @Version 版本号
 * @Description 描述
 */
@Configuration
public class GlobalCorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOrigin("*");
        config.setAllowCredentials(true);
        config.addAllowedMethod("*");
        config.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
        return new CorsFilter(configSource);
    }

}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA葵花宝典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因:
  • 方法一:
  • 方法二:
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档