一场跨域引发的‘血案’

448 阅读1分钟

跨域

跨域起源

参考 阮一峰 大哥 
    http://www.ruanyifeng.com/blog/2016/04/cors.html

复杂请求的一些question:

  • 需求:文件上传服务需要上传到另外一台服务器,故而引起跨域问题

前提: 我们主要使用 axios ,nginx代理

假设nginx 已经配置正常;

正文

  • 问题一
    1. 配置URL 为对应的 另外的服务器地址,上传文件,发现两个请求:
        1. 第一个报 cors err
        1. 第二个 报 204 正常返回但 no content

方案: 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 输入后台给的地址,如果出现那种, 需要跳转的页面,有高级按钮,提示你证书不正确,,,需要找后台排查!!!

  • 问题三 我要忙了,现了补充……