如何解决前后端跨域问题

0.使用配置类:配置在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;
@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建 CORS 配置对象
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOriginPattern("*");  // 允许所有域
        config.setAllowCredentials(true);     // 是否发送 Cookie
        config.addAllowedMethod("*");         // 允许所有请求方法
        config.addAllowedHeader("*");         // 允许所有请求头部
        config.addExposedHeader("*");         // 暴露所有头部信息

        // 2. 添加地址映射
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**", config);  // 映射到所有地址

        // 3. 返回 CorsFilter 对象
        return new CorsFilter(corsConfigurationSource);
    }
}

1.使用CORS(跨域资源共享):

在Spring Boot中,你可以使用@CrossOrigin注解来开启CORS支持。在Controller类或方法上添加该注解,指定允许的来源、允许的方法等。

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://localhost:8080")
public class MyController {
    // ...
}

或者:

如何解决前后端跨域问题_第1张图片

 2.配置WebSecurity:

在Spring Security配置中添加配置以允许跨域请求:

@Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and().csrf().disable(); // 其他配置... } }

如何解决前后端跨域问题_第2张图片

3.使用代理在前端配置:

如何解决前后端跨域问题_第3张图片

如何解决前后端跨域问题_第4张图片

你可能感兴趣的:(spring,java)