所以我有一个如下所示的帖子,我发送一个POST请求登录,响应为空 -符合预期,很好-但我需要访问“授权”标头。
我找不到任何访问方式。
const data = {email: "email", password: "password"};
this.http.post(`/login`, data).pipe(
tap(resp => {
console.log(resp); // it will be an empty string
return resp;
})).subscribe((resp: any) => {
console.log(resp.headers.get('Authorization')); // error: Cannot read property 'headers' of null
});
更新 受TheUnreal的答案启发,我添加了选项
this.http.post(`/login`, data, {observe: 'response'} )...
现在,我可以访问某些标头,例如“ Cache-Control”。
可能我需要从服务器端表达其余标头
Sam Walpole在评论部分中正确,此问题的大部分内容都在他提供的链接上得到了解答-签出。
答案 0 :(得分:0)
您可以通过将以下选项传递给http方法来获取请求的标头和其他信息:
return this.http.post('YOUR URL', PAYLOAD, {
observe: 'events'
})
答案 1 :(得分:0)
按照TheUnreal的建议在帖子中添加选项,但对我来说需要“回复”
this.http.post(`/login`, data, {observe: 'response'} )
在服务器端,需要设置并公开标头 Access-Control-Allow-Headers 和 Access-Control-Expose-Headers 。
话题不大,但是-可能对某人有帮助-这就是我们在Java Spring中的配置外观
configuration.setAllowedHeaders(Arrays.asList("Authorization", "Cache-Control", "Content-Type", "Access-Control-Allow-Headers", "Origin,Accept", "X-Requested-With", "Content-Type", "Access-Control-Request-Method", "Access-Control-Request-Headers"));
configuration.addExposedHeader("Authorization");
Sam Walpole在此问题的评论部分中是正确的,该问题的大部分内容都在他提供的链接上得到了解答-签出。