解决 Axios 无法获取 headers

在开发图床工具的时候发现 Axios 不能获取 response header 中的 token,但是 chrome 的network 中已经返回了。究其原因,是因为跨域了,期间尝试 chrome 跨域插件,server 端添加 跨域头部,webpack 跨域功能,都不行。

Access-Control-Expose-Headers

The Access-Control-Expose-Headers header lets a server whitelist headers that browsers are allowed to access. For example:

Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header

意思是,只要你跨域了,如果不用这个header头来告诉浏览器哪些可以访问(设置白名单),那么浏览器就不让你访问,所以,server端  koa2 只要添加一行关键代码就可以了。囧

如果要设置多个字段,换成数组就可以了ctx.set('Access-Control-Expose-Headers',['x-token','another')

app.use(function(ctx,next) {
    ctx.set('Access-Control-Expose-Headers','x-token')
    return next();
})