2

我试图从post请求中获取响应头,但HttpResponse对象不包含我在网络中可以看到的相同头。我究竟做错了什么?我需要访问Apiproxy-Session-Id密钥的值,并且它不在HttpHeaders中。在Angular中从HttpClient post请求获取响应头文件?

这是我的代码来执行发布请求并记录完整响应,其中http是一个HttpClient对象。

this.http.post('http://localhost:8081/user/login', JSON.stringify(requestBody), {observe: 'response'}).subscribe(resp => { console.log(resp); });

This is the response I'm logging.

These are the headers I'm seeing in the network.

我新的角度和这个非常难住了。谢谢你的帮助!

+0

您的问题解决了吗? – theLearner

回答

2

man。我在这里有同样的问题。由于您的后端和前端位于不同的域中,因此某些响应的标头默认情况下不会公开。

您可以尝试两种不同的方法:

1.代理您的角度

请求此代理会使你的后端想请求从萨韦域来了。请参阅this doc了解如何操作。请记住,使用此选项所有标题将被公开。

2.暴露你的后端服务器

你想要的头因为我不知道你的后端的语言,我不能告诉你步步这样做,但我必须在响应中做这样的事情:response.add("Access-Control-Expose-Headers", "Apiproxy-Session-Id")

+0

谢谢!真的有帮助。这应该被接受回答 – David

+0

好男人。很高兴我能帮上忙。 –

0

尝试添加responseType: 'text'

this.http.post('http://localhost:8081/user/login', 
    JSON.stringify(requestBody), {observe: 'response', responseType: 'text'}).subscribe(resp => { 
     console.log(resp); 
    });