XMLHttpRequest 跨域请求获取 Response Header

前端 JS 获取 Header 有两种方式

  • 方式一

    xhr.getAllResponseHeaders() // 获取所有的header
    
  • 方式二

    xhr.getResponseHeader("key") // 获取指定的header 
    

首先我们需要在服务端添加自定义的 Header

response.addHeader("tokenKey", "tokenValue");

前端使用 axios 发送请求,响应结果如下

let allHeaders = response.request.getAllResponseHeaders();
console.log(allHeaders);

打印结果如下

content-type: application/json;charset=UTF-8

我们发现打印结果中并没有我们自定义的 Header

我们通过另一种方式直接获取指定的 Header

response.request.getResponseHeader("tokenKey");

浏览器控制台报错信息如下

Refused to get unsafe header "tokenKey"

错误信息的意思就是说拒绝获取不安全的响应头

以上两种方式,我们再通过浏览器的开发者工具查看请求的响应头,却是存在的

image-20200504224538451

为什么请求中的 Header 存在,但是却获取不到呢?

再 MDN Web 文档中有如下表述

image-20200504225516513

表述的非常清楚,我们需要将允许浏览器访问的头放入白名单

服务端修改如下所示

response.addHeader("tokenKey", "tokenValue");
response.addHeader("Access-Control-Expose-Headers", "tokenKey");

前端再次获取自定义 Header,发现已经成功了

参考资料:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值