最近做了一个需求,具体要求是前端写一个js给别人调用,在这个js中要先调用一个接口获取token,在获取token后将token放在请求的头中进行其他接口的调用。
1.用xhr + promise的格式封装用来请求的request;
2.获取token,将token放在其他请求的头中;
重点来了:
本地调试时,因为是直接调用的测试服的接口地址,所以报跨域问题,试过了http-proxy-middleware,nginx代理,感觉还是不能很好的解决跨域的问题,最后,搜了一波
问题一:
找到了个chrome上的扩展插件:Access-Control-Expose-Headers,如截图:
问题二:
对于跨域的问题,首先要服务端配置允许跨域,服务端要加的内容如下:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
复制代码
其次,如果已经配置了以上的设置,还不能跨域成功的话,要看下是否有设置自定义的头部且要获取自定义的头部
如图:
后端设置了自定义的头部x-error-code,前端要拿到这个code,本地调试时报错了
解决方法:
服务端要将该字段允许前端获取,需加如下内容:
Access-Control-Expose-Headers:X-Error-Code
复制代码
问题三:
前端在发送请求时,需要设置定义的头部,错误截图如下:
解决方法:
Access-Control-Allow-Headers:X-App-Id
复制代码
总结:有报错时,还是应该好好看看报错信息,不然绕路太多,最后,隆重感谢这篇文章,以上解决方案来自于该文章:www.jianshu.com/p/ecce12652…