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

Angular5+SpringBoot项目请求报错:404及Tomcat无效Cookie问题咨询

解决Angular 5 + Spring Boot项目的404请求与Tomcat Cookie警告问题

看起来你遇到了两个关联又独立的问题,我来一步步帮你拆解解决:

一、Chrome控制台的404错误(GET http://localhost:4200/customer 404)

这个问题的核心是请求路径错误,原因很直观:

  • Angular前端默认运行在localhost:4200,而Spring Boot后端默认监听localhost:8080,你现在让前端请求自身4200端口的/customer接口,但这个接口只存在于后端的8080端口,所以必然返回404。

解决步骤:

  • 修改Angular中的请求代码,把目标URL切换到后端端口,示例:
    // 原错误代码(请求前端本地端口)
    // this.http.get('/customer')
    // 修改后(指向后端服务)
    this.http.get('http://localhost:8080/customer')
    
  • 这时候会触发跨域问题,需要在Spring Boot端开启跨域支持:
    可以直接在Controller类或接口方法上添加@CrossOrigin注解:
    @CrossOrigin(origins = "http://localhost:4200")
    @RestController
    public class CustomerController {
        // 你的接口实现
    }
    
    或者配置全局跨域配置类,让所有接口都支持跨域请求。

这个警告是因为后端设置的Cookie值不符合Tomcat遵循的RFC 6265规范,比如值包含了空格、逗号、分号这类特殊字符,或者没有用引号包裹特殊内容。

解决方法:

  • 优先规范Cookie值:确保值是合法的“token”(仅包含字母、数字,以及!#$%&'*+-.^_|~`这类允许的特殊字符)。
  • 如果必须使用特殊字符,要么用引号包裹值,要么先做URL编码:
    // 错误示例:值包含空格
    // response.addCookie(new Cookie("user", "John Doe"));
    // 正确做法1:用引号包裹特殊值
    Cookie cookie = new Cookie("user", "\"John Doe\"");
    // 正确做法2:对值进行URL编码
    String encodedValue = URLEncoder.encode("John Doe", StandardCharsets.UTF_8);
    Cookie cookie = new Cookie("user", encodedValue);
    response.addCookie(cookie);
    
  • 如果你不想调整Cookie值,也可以在Spring Boot的application.properties中切换Tomcat的Cookie处理器为更宽松的RFC标准实现:
    server.tomcat.cookie-processor=org.apache.tomcat.util.http.Rfc6265CookieProcessor
    

先按照上面的步骤调整,应该能解决这两个问题,如果还有细节卡点,可以补充代码片段再进一步排查~

内容的提问来源于stack exchange,提问作者CHARAFI Saad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:01:16