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

Angular向网络部署的Spring Boot服务发送POST请求返回403错误,本地请求正常

Angular向网络部署的Spring Boot服务发送POST请求返回403错误,本地请求正常

看起来你遇到的是跨域环境下修改类请求(POST/PUT)返回403,但预检OPTIONS请求正常,Postman测试也存在部分异常的问题。结合你的配置和请求信息,我帮你梳理几个可能的排查方向:

一、CSRF令牌的传递问题

从你的请求头能看到已经携带了X-Xsrf-Token,但有几个细节需要确认:

  • 你用了CookieCsrfTokenRepository.withHttpOnlyFalse()把CSRF令牌存在Cookie里,Angular默认会自动读取这个Cookie并在请求头带上X-Xsrf-Token,但跨域场景下Cookie的SameSite属性可能会影响令牌传递:
    1. 部署后的服务是HTTPS环境,跨域时Cookie默认的Lax属性可能导致POST/PUT请求无法携带Cookie,建议显式设置为None并开启secure:
      CookieCsrfTokenRepository csrfRepo = CookieCsrfTokenRepository.withHttpOnlyFalse();
      csrfRepo.setCookieCustomizer(cookie -> cookie.sameSite("None").secure(true));
      
    2. 你设置了requestHandler.setCsrfRequestAttributeName(null),这可能导致Spring无法正确获取令牌,建议注释掉这行,使用默认配置试试。

二、CORS配置的细节优化

你的CORS配置已经覆盖了基本需求,但可以做些小调整:

  • 先整理重复的允许源,避免冗余:
    configuration.setAllowedOrigins(Arrays.asList(
        "http://yasa.gmbh", 
        "https://yasa.gmbh",
        "https://s995626175.online.de",
        "http://localhost:4200"
    ));
    
  • 确认前端请求的Origin严格匹配配置里的源(从你的请求日志看http://localhost:4200已经在列表里,这部分没问题)。

三、SecurityFilterChain的过滤器顺序问题

你的自定义过滤器顺序可能影响CORS的正常处理:

  • 目前你把exceptionHandlerFilter放在了CorsFilter前面,这可能导致CORS逻辑还没执行就被拦截。建议先配置CORS和CSRF,再添加自定义过滤器,保证CORS处理优先级最高:
    http
        .cors(cors -> cors.configurationSource(corsConfigurationSource()))
        .csrf(csrf -> csrf
            .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
        )
        .addFilterBefore(exceptionHandlerFilter, UsernamePasswordAuthenticationFilter.class)
        .addFilterAfter(jwtTokenVerifierFilter, ExceptionHandlerFilter.class);
    

四、云平台的额外安全限制

部署到Render或GCP时,平台可能有额外的安全规则:

  • 检查Render的反向代理是否修改了请求头,确保X-Xsrf-Token和Cookie能完整到达Spring服务
  • 查看GCP的防火墙、负载均衡配置,确认PUT/POST请求没有被平台层面拦截

五、权限配置的验证

你提到Postman登录成功但PUT失败,说明问题可能不止跨域,还要检查权限逻辑:

  • 确认PUT接口的权限注解(比如@PreAuthorize)是否正确,当前登录用户是否拥有对应的权限
  • 检查JWT令牌中的权限声明是否完整,PUT请求时是否携带了有效的令牌

你可以先从CSRF令牌的SameSite属性和过滤器顺序这两点入手测试,应该能解决大部分问题。

备注:内容来源于stack exchange,提问作者Yazan Sadieh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:23:40