跨域总结(view:1393)

1.本地文件请求api完整地址

api不开启cors,ajax浏览器报错跨域
api开启cors后:ajax正常返回

2.线上服务器环境,请求其他域名下的api完整地址
api不开启cors,ajax浏览器报错跨域
api开启cors后:ajax正常返回

3.线上服务器,请求api相对路径
启用反向代理,无论api是否开启cors都可以正常返回

4.本地node环境

不开启proxy,axios直接请求完整api地址,api开启cors可以正常返回,api不开启cors报错
开启proxy后,axios请求相对api地址,无论api是否开启cors都可以成功返回
开启proxy后,如果继续请求完整api地址,因为走了proxy的路由规则,如果对完整路径没做正确匹配也会报错

proxyTable: {
  '/api':{
    target:'http://baidu.com:3101/',
    changeOrigin: true,
    pathRewrite:{
      '^/api':''
    }
  },
  '/':{
    target:'http://10.10.10.10:8001',
    changeOrigin: true
  }
}

5.curl
发送POST请求

curl -d '{"hotelId":13, "operator":"Admin","reason":"" }' "http://baidu.com:8017/order/cancel"

无论api是否开启cors都可以正确返回

6.结论
本地文件,需要api开启cors
node本地服务器,不开启proxy时候表现和本地文件一样,开启proxy后无需后端开启api的cors
线上服务器,如果直接请求其他域名下api完整路径需要api开启cors,如果启用反向代理则不需要开启cors