vue不同环境使用axios跨域,前端解决方案

简介: vue不同环境使用axios跨域,前端解决方案
  1. development 环境
    只需要在config->index.js dev模块中添加proxyTable 即可
    在这里插入图片描述

    proxyTable: {
            //当请求中以/api 开头时,对将/api请求路径进行代理
          '/api': {
            //接口域名
            target: 'http://localhost:3000/',
            // 如果接口跨域,需要进行这个参数配置,为true的话,请求的header将会设置为匹配目标服务器的规则(Access-Control-Allow-Origin)而跨域设置后端是在response中设置
            changeOrigin: true,
            //重写/api  为 /
            pathRewrite: {
              '^/api': '/'
            }
          }
        },
        全部意义: 当发送localhost:8080/api/test 时,将请求代理到http://localhost:3000/test   因为重写了/api 为 /。
        如果不重写,去掉pathReWrite配置。当发送localhost:8080/api/test 时,将请求代理到http://localhost:3000/api/test

    其实请求接口 也可以不用写 /api 来请求,可以直接配置‘/’ 因为后端真实接口为 ‘/’ 开头

    proxyTable: {
      '/': {
        target: 'http://localhost:3000/', 
        changeOrigin: true,
      }
    },
    全部意义: 当发送localhost:8080/test 时,将请求代理到http://localhost:3000/test 

    真实axios 请求情况

    goInfo(item){
      let playListUrl = `/playlist/detail?id=${item.id}`;
      axios.get(playListUrl).then((response) => {
        xxxxx
    },

    **问题:那为什么要写 /api 呢?因为生产环境和开发
    不一样,开发环境一般都是采用nginx+tomcat / 或者单纯用nginx。利用nginx 做代理,可以解决跨域问题。而location / 模块映射 和 location /api 模块 映射应该要区分开来。一个专门做静态文件访问,一个专门做请求代理**

  2. product 环境

    #xi-music项目  注意当前域名
    server {
       // xxxxx 这部分省略
    
        location / {
            #当请求路径以根路径开头时,去/usr/lcoal下找静态资源,默认index.html
            #示例:/xi    映射为   /usr/local/xi 
            root   /usr/local;
            index  index.html index.htm;
           # 尝试读取文件 $uri代表  当前请求子路径, $uri/  代表请求的目录
           #如果前两项都没有匹配,那么重新发送请求/xi-music
           #解决刷新404问题
            try_files  $uri $uri/ /xi-music;
        }
    
          #添加访问目录为/api的代理配置,使以“/api”开头的地址都转到“http://127.0.0.1:3000”上
        location /api {
               rewrite  ^/api/(.*)$ /$1 break;
               # 将/api下的子路径  拼接到http://localhost:3000下
               # /api/song     http://localhost:3000/song
               proxy_pass   http://127.0.0.1:3000;
        }
        
    }
相关文章
|
8月前
|
JavaScript
Vue中Axios网络请求封装-企业最常用封装模式
本教程介绍如何安装并配置 Axios 实例,包含请求与响应拦截器,实现自动携带 Token、错误提示及登录状态管理,适用于 Vue 项目。
339 1
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1165 1
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
689 83
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
496 22
|
11月前
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
845 8
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
728 2
|
7月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
613 137
|
11月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1159 0
|
11月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能