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;
        }
        
    }
相关文章
|
7月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
672 1
|
8月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
494 83
|
9月前
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
6090 90
|
7月前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
307 22
|
9月前
|
前端开发 JavaScript 安全
剖析跨域问题始末及其解决方案——前端必备交叉知识(一)
跨域问题是前端开发中的常见挑战,了解并掌握不同的跨域解决方案能帮助你更高效地进行开发工作。本文对同源策略、跨域以及解决跨域的三种方案: CORS、JSONP、代理等跨域技术进行了介绍。选择合适的跨域解决方案非常重要。 在实际开发中,推荐优先考虑使用 CORS,因为它是现代浏览器支持的标准,且安全性较高。如果服务器无法修改,则可以考虑使用代理。如果是特殊情况,可以使用 JSONP,但要注意安全性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错
|
9月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
266 10
|
JavaScript 前端开发 数据库
前端之Vue配置
为了便于学习,本篇博客将会在评论区抽出一位幸运观众送出Vue.js全家桶一本书。书籍介绍请看文末。
259 0
前端之Vue配置
|
3月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
330 2
|
2月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
307 137