You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular向Spring Boot发注册请求遇CORS拦截问题求助

问题解决:CORS策略拦截请求(domain头未被允许)

问题原因

控制台错误明确指出:你的Angular请求中携带了domain自定义请求头,但Java端CORS过滤器配置的Access-Control-Allow-Headers列表里未包含该字段,导致预检(OPTIONS)请求被拒绝。

解决方案

方案1:修改现有Filter代码

直接在Access-Control-Allow-Headers中添加domain字段:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        try {
            System.out.println("inside filter>>>>");
             HttpServletResponse response = (HttpServletResponse) res;
                HttpServletRequest request = (HttpServletRequest) req;
                response.setHeader("Access-Control-Allow-Origin", "http://localhost:4200");
                response.setHeader("Access-Control-Allow-Credentials", "true");
                response.setHeader("Access-Control-Allow-Methods",
                        "ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL");
                response.setHeader("Access-Control-Max-Age", "3600");
                // 添加domain字段到允许的请求头列表
                response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Key, Authorization, domain");

            chain.doFilter(request, response);
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }

方案2:使用Spring Boot官方CORS配置(更推荐)

避免手动编写Filter容易出错的问题,采用Spring官方提供的规范配置方式:

方法A:控制器级注解配置

在注册接口所在的Controller上添加@CrossOrigin注解,精准控制该控制器的CORS规则:

@CrossOrigin(
    origins = "http://localhost:4200",
    allowedHeaders = {"Origin", "X-Requested-With", "Content-Type", "Accept", "Key", "Authorization", "domain"},
    allowCredentials = true,
    maxAge = 3600
)
@RestController
@RequestMapping("/bites/service")
public class SignupController {
    // 注册接口方法
    @PostMapping("/signup")
    public ResponseEntity<?> handleSignup(@RequestBody UserSignupRequest request) {
        // 业务逻辑实现
        return ResponseEntity.ok("注册成功");
    }
}

方法B:全局CORS配置

创建全局配置类,统一管理所有接口的CORS规则:

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/bites/service/**") // 匹配你的接口路径
                .allowedOrigins("http://localhost:4200")
                .allowedMethods("*") // 允许所有HTTP方法,也可指定POST、OPTIONS等具体方法
                .allowedHeaders("Origin", "X-Requested-With", "Content-Type", "Accept", "Key", "Authorization", "domain")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

验证修改

修改完成后,重启Spring Boot服务,再测试Angular的注册请求,CORS拦截问题即可解决。

内容的提问来源于stack exchange,提问作者Meta Stack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:20:33