当前位置 博文首页 > 文章内容

    vue 本地和线上跨域的问题

    作者:糖丝橙 栏目:最新动态时讯 时间:2020-04-29 15:57:15

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    产生跨域问题的原因

      跨域是因为浏览器的同源策略所导致的。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。浏览器引入同源策略主要是为了防止XSS,CSRF攻击。

    常见跨域问题的解决方式

    • 使用jsonp

    • 服务端代理

    • 服务端设置Request Header头中Access-Control-Allow-Origin为指定可获取数据的域名 

    本地开发模式

          如果是本地开发模式下 就没有必要再去麻烦后端去解决一下跨域问题。vue 本地开发提供了一个很好的解决跨域问题 请求转发

          如果是vue脚手架找到vue.config.js中配置,如果是自己搭的开发环境找到对应的配置文件(大部分应该都在config文件夹下的index.js)


      devServer: {
        proxy: {      '/api': { //匹配api开头的走代理
            target: process.env.VUE_APP_BASE_API, // 接口地址
            changeOrigin: true,  //允许跨域        pathRewrite: {          '^/api': '' //重新路由,访问后端接口不一定是api 开头的这个时候就可以改变        }
          }
        }
      },


    线上开发

          因为我们这边计划 前端统一打包分发多个地区,而不是各个地区分别去线上打包,提高版本发布效率,而且保证线上各个地区代码一致性.又因为各个地区接口地址也是独立的,所以接口地址不能写在配置文件中。

          所以在各个地区的nginx服务器做了代理转发。具体配置如下:


    server {
        listen 80;
        server_name 域名;
        root ####;
    
        location / {
          try_files $uri $uri/ /index.html;  //解决 HTML5 History 模式直接访问子路由404问题    }
    
        location ^~/api/ {
    
          proxy_pass  域名或者ip地址:端口/; //匹配api开头的请求 端口后面加 / 请求的时候会把api去掉 不加 / 会带上完整的访问接口地址,这个可以和后端约定
        }
    
    }

          其他的跨域解决方案可以自行到网上搜搜


    文章来源:博客园

    原文链接:https://www.cnblogs.com/qcwblog/p/12802508.html

    如有侵权,请联系本人删除