axios因为跨域导致或者headers信息不全

  |  

nodejs+koa2

CORS跨域时axios无法获取服务器自定义的header信息

用axios发送请求获取reponse header中的数据,需要提前在后台添加设置过滤器头部配置、自定义头部属性、并打开过滤器。
然后就是前端发送请求,然后获取reponse headers里面的自定义属性。

原来在默认的请求上, 浏览器只能访问以下默认的 响应头:(如下例)

Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma

而且使用捕获响应头的方法时,浏览器默认respose.headers 拿到的只有两个headers信息(如下列):

1
2
3
4
5

Object {
cache-control:"private, must-revalidate", // 默认无配置不显示
content-type:"application/json"
}

如果想让浏览器能访问到其他的 响应头的话:需要在服务器上设置 Access-Control-Expose-Headers

服务器安装koa2-cors

1
2
3
4
5
6
7
8
yarn add koa2-cors

const cors = require('koa2-cors');
// 解决跨域问题
App.use(cors({
'credentials': true,
'exposeHeaders': [ '*' ], //Access-Control-Expose-Headers *:代表所有 也可以一个一个配置 ['token', 'status']
}));
文章目录