在开发图床工具的时候发现 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();
})