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

Angular 5代码中请求头未随请求发送的原因咨询

为什么你的Angular 5请求头没发送出去?

嘿,我来帮你搞定这个问题!你的代码里有几个容易踩的坑,咱们一个个捋清楚:

1. HttpHeaders是不可变对象,append后必须重新赋值

Angular的HttpHeaders实例是不可变的——调用append()方法不会修改原来的headers对象,而是返回一个包含新头的全新实例。你原来的代码只是调用了append()但没把新实例赋值回去,所以最后用的还是空的headers!

修正写法:

let headers = new HttpHeaders();
// 关键:把append返回的新对象重新赋值给headers
headers = headers.append('command', 'ProcessLoginPos');

2. Access-Control-Allow-Origin是响应头,别往请求里加

这个头是服务器返回给浏览器用的,用来允许跨域请求,前端请求里加这个头完全没用,浏览器甚至会直接忽略它。直接删掉这行代码就好。

3. HttpRequest的headers配置要写完整

看你代码最后{ 'headers...应该是没写完,正确的配置是把headers对象放到headers属性里,比如:

const req = new HttpRequest('POST', 'http://localhost:8080/ProjectOne/', formData, { 
  headers: headers
});

完整修正后的代码

loginUser(email,password){ 
  console.log("loginuser"); 
  let formData:FormData = new FormData(); 
  formData.append("format","json"); 
  formData.append("email",email); 
  formData.append("password",password); 

  let headers = new HttpHeaders();
  // 重新赋值headers,保留需要的请求头
  headers = headers.append('command', 'ProcessLoginPos'); 

  const req = new HttpRequest('POST', 'http://localhost:8080/ProjectOne/', formData, { 
    headers: headers
  });

  // 别忘了发送请求,比如通过HttpClient执行:
  // return this.http.request(req);
}

额外提示:如果遇到跨域问题

如果之后浏览器报CORS相关错误,那得在你的后端服务器配置Access-Control-Allow-Origin响应头,而不是在前端请求里折腾。比如在Java后端可以通过过滤器或者注解配置,Node.js可以用cors中间件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:14:37