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

如何解决使用Angular、Java Servlet的POST请求头错误?

Angular + Java Servlet POST请求头错误解决指南

1. 处理CORS预检请求(OPTIONS)

浏览器跨域发送POST(尤其是带自定义头/JSON格式)时会先发OPTIONS预检请求,Servlet必须正确响应:

@Override
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 替换成你的前端域名,生产环境请勿使用*
    resp.setHeader("Access-Control-Allow-Origin", "http://localhost:4200");
    resp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    // 这里要包含前端实际发送的所有请求头,比如Content-Type、自定义的X-开头的头
    resp.setHeader("Access-Control-Allow-Headers", "Content-Type, X-Requested-With, Authorization");
    resp.setHeader("Access-Control-Allow-Credentials", "true");
    resp.setHeader("Access-Control-Max-Age", "3600");
    resp.setStatus(HttpServletResponse.SC_OK);
}

2. 对齐前后端Content-Type

  • 若前端发送JSON(Angular HttpClient默认行为),Servlet不能用request.getParameter()读取参数,需直接读取请求体:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 先添加跨域响应头
    resp.setHeader("Access-Control-Allow-Origin", "http://localhost:4200");
    resp.setHeader("Access-Control-Allow-Credentials", "true");

    // 读取JSON格式的请求体
    BufferedReader reader = req.getReader();
    String jsonBody = reader.lines().collect(Collectors.joining());
    // 用Jackson/Gson等工具解析JSON,示例:
    // YourDto dto = new ObjectMapper().readValue(jsonBody, YourDto.class);
}
  • 若后端期望application/x-www-form-urlencoded格式参数,前端需用HttpParams传参:
const params = new HttpParams()
  .set('username', 'test')
  .set('password', '123');
this.http.post('/api/login', params);

3. 检查请求头白名单

打开浏览器F12→网络面板,查看POST请求的Request Headers,把所有自定义头(比如X-Token)添加到Servlet的Access-Control-Allow-Headers配置中,漏加会直接触发请求头错误。

4. 确保CORS过滤器优先级

如果项目中有多个过滤器,需将CORS相关过滤器设置为第一个执行,避免其他过滤器提前拦截OPTIONS请求并返回错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:26