spring boot项目 CORS设置

本文介绍了Spring Boot项目中处理CORS(跨源资源共享)的三种方法:全局配置、注解方式和使用拦截器。全局配置需将配置类与接口放在同一目录;注解方式方便快捷;拦截器则需实现HandlerInterceptor接口,理解其方法执行顺序对优化处理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.全局配置
这个类要和接口在同一个目录下

package com.example.tunnel;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/book/**")   //对哪种格式的路径进行跨域处理
                .allowedHeaders("*")    //允许的请求头
                .allowedMethods("*")    //允许的请求方法
                .maxAge(1800)       //探测请求的有效期
                .allowedOrigins("http://127.0.0.1:5500");  //支持的域
    }

}

2.注解方式

  @CrossOrigin(value = "
  			http://127.0.0.1:8080",   //允许的源
            maxAge = 3600 ,				//探测请求的有效期
            allowedHeaders = "*")		//允许的请求头

3.拦截器

创建拦截器实现HandlerInterceptor接口
拦截器中的方法按preHandle->Controller->postHandle->afterCompletion的顺序执行
preHandle方法返回true时后面的方法才会执行

package org.sang;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor1 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler){
        System.out.println("MyInterceptor1>>>preHandle");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response,
                           Object handler,
                           ModelAndView modelAndView){
        System.out.println("MyInterceptor1>>>postHandle");
    }
    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response,
                                Object handler,
                                Exception ex){
        System.out.println("MyInterceptor1>>>afterCompletion");
    }
}

配置拦截器

package org.sang;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor1())
                .addPathPatterns("/**")    //表示拦截路径
                .excludePathPatterns("/hello");	//表示排除的路径
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值