跨域
跨域起源
参考 阮一峰 大哥
http://www.ruanyifeng.com/blog/2016/04/cors.html
复杂请求的一些question:
- 需求:文件上传服务需要上传到另外一台服务器,故而引起跨域问题
前提: 我们主要使用 axios ,nginx代理
假设nginx 已经配置正常;
正文
- 问题一
- 配置URL 为对应的 另外的服务器地址,上传文件,发现两个请求:
-
- 第一个报 cors err
-
-
第二个 报 204 正常返回但 no content
-
-
- 配置URL 为对应的 另外的服务器地址,上传文件,发现两个请求:
方案: 1. 查看控制台报错,主流使用token,需要给 Access-Control-Allow-Headers 请求头,添加 token ,(nginx)配置 2.
axios.defaults.withCredentials = true
这个是百度搜索的方案,确确实实坑,没有讲啥时候用,有啥效果,就说要加,导致请求一直 403,排查不出来啥原因。
这一条要求在请求头里带上cookie,划重点啊,如果前端配置了这个withCredentials=true,后段设置Access-Control-Allow-Origin不能为 " * ",必须是你的源地址啊
**这个是非必须,非必须的,使用token的话,通常是不需要携带 cookie的,是不需要加这个配置!!!**
- 问题二 请求报错 : net::ERR_CERT_COMMON_NAME_INVALID
后端的跨域请求,也需要自己手动调用尝试,
排查后发现,后端给的地址,对应的证书不正确。。。嗯,好吧,我不生气!!!
此条验证可以直接浏览器中 URL 输入后台给的地址,如果出现那种, 需要跳转的页面,有高级按钮,提示你证书不正确,,,需要找后台排查!!!
- 问题三 我要忙了,现了补充……