温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java API接口怎么跨域

发布时间:2026-09-11 22:02:41 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 后端(API 接口)中解决**跨域(CORS)**问题,常见做法有以下几种,按使用场景给你总结:


一、Spring Boot 项目(最常用)

1️⃣ 使用 @CrossOrigin 注解(局部)

适合单个接口或 Controller:

@RestController
@CrossOrigin(origins = "http://localhost:8080")
public class UserController {

    @GetMapping("/user")
    public String getUser() {
        return "user";
    }
}

允许多个域名:

@CrossOrigin(origins = {"http://a.com", "http://b.com"})

2️⃣ 全局跨域配置(推荐)

写一个配置类,统一处理:

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","POST","PUT","DELETE")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}

⚠️ 注意:

  • allowedOriginPatterns("*") 常用于带 cookie 的场景
  • allowedOrigins("*") 不能与 allowCredentials(true) 同时使用

3️⃣ 使用 Filter(更底层)

适合非 Spring MVC 或统一拦截:

@WebFilter("/*")
public class CorsFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE");
        response.setHeader("Access-Control-Allow-Headers", "*");
        chain.doFilter(req, res);
    }
}

二、Spring Security 项目

如果用了 Spring Security,必须在 Security 中放行 CORS

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .cors().and()
            .csrf().disable();
        return http.build();
    }
}

并保留上面的 CorsConfig


三、非 Spring(原生 Servlet / Java Web)

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, POST");
response.setHeader("Access-Control-Allow-Headers", "Content-Type");

四、前端 + 后端联调注意点

  • 前端报错 CORS policy → 后端没配置
  • cookie → 必须:
    • allowCredentials(true)
    • origin 不能是 *
  • 预检请求 OPTIONS 必须返回 200

五、常见错误

allowedOrigins("*") + allowCredentials(true)
✅ 改成 allowedOriginPatterns("*")

❌ 只配置 Controller,没放行 Security
✅ Security 加 .cors()


如果你愿意,可以告诉我:

  • 用的是 Spring Boot / Spring Cloud / 原生 Servlet
  • 是否使用 Spring Security
  • 是否带 cookie / token

我可以直接给你一份可用代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI