解决xhr发送post请求跨域问题

3,269 阅读1分钟

最近做了一个需求,具体要求是前端写一个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…