vue总结之跨域解决办法

本文涉及的产品
.cn 域名,1个 12个月
简介: vue总结之跨域解决办法

一、什么是跨域?


当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域


二、为什么会出现跨域

       出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)


三、如何解决跨域

在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的服务,loclahost:8080),再由本地的服务器去请求真正的服务器。


一、vue 配置本地代理解决跨域步骤

  vue2配置代理 ,先找到config/index.js,dev对象下的proxyTable

proxyTable: {
          '/api': {
            target: "", // API服务器的地址
            changeOrigin: true, // 如果设置为true,那么本地会虚拟一个服务器接收你的请求并代你发送该请求,这样就不会有跨域问题(只适合开发环境)
            pathRewrite: {
              '^/api': '' // 重写路径 比如'/api/aaa/ccc'重写为'/aaa/ccc'
            }
          }
        },


vue3配置代理

需要新建vue.config.js,然后重启项目使项目识别这个文件夹,再向vue.config.js文件夹里输入以下代码

module.exports = {
    devServer: {
      proxy: {
        '/api': {
          target: 'https://域名/api',// API服务器的地址
          ws: true,  //代理websockets
          changeOrigin: true, // 虚拟的站点需要更管origin
          pathRewrite: {   //重写路径 比如'/api/aaa/ccc'重写为'/aaa/ccc'
             '^/api': ''
          }
        }
      }
    }
  }


这样使用axios时需要一点改变

axios.post('/api/register',{//最终相当于https://域名/api/register
 })
  .then(function (res) {
      console.log(res);
  })


二、服务器端进行代理配置

首先打开我们的宝塔面板进入我们的项目站点下



点击反向代理菜单



点击添加反向代理



开启高级功能



代理名称和代理目录可以随便写,目标url是你的接口域名,替换内容是你需要替换的地方一般填写/api



填写完成后点击提交即可

相关文章
|
1天前
|
数据采集 JavaScript 前端开发
Vue框架的优缺点是什么
【7月更文挑战第5天】 Vue框架:组件化开发利于重用与扩展,响应式数据绑定简化状态管理;学习曲线平缓,生态系统丰富,集成便捷,且具性能优化手段。缺点包括社区规模相对小,类型支持不足(Vue 3.x改善),路由和状态管理需额外配置,SEO支持有限。随着发展,部分缺点正被克服。
7 1
|
1天前
|
JavaScript
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
|
1天前
|
JavaScript
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
|
1天前
|
JavaScript
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
|
1天前
|
JavaScript 前端开发 开发工具
如何学习vue框架
【7月更文挑战第5天】 - 先学HTML/CSS/JS基础和前端工程化工具(npm, webpack, Git)。 - 从Vue官方文档学习基础,包括指令、组件、响应式系统。 - 深入研究Vue Router和Vuex,掌握路由管理和状态管理。 - 学习自定义指令和Mixins,优化性能技巧。 - 实战项目练习,加入Vue社区,阅读相关资源,提升技能。 - 关注Vue生态,持续实践和创新,以适应不断发展的框架。
5 0
|
1天前
|
缓存 JavaScript 算法
vue 性能优化
vue 性能优化
10 0
|
2天前
|
JavaScript 前端开发 程序员
Vue组件化、单文件组件以及使用vue-cli(脚手架)
Vue组件化、单文件组件以及使用vue-cli(脚手架)
12 0
|
2天前
|
JavaScript API
Vue数据动态代理机制的实现以及响应式与数据劫持
Vue数据动态代理机制的实现以及响应式与数据劫持
6 0
|
2天前
|
JavaScript 前端开发 程序员
Vue指令的使用以及自定义指令
Vue指令的使用以及自定义指令
7 0
|
2天前
|
JavaScript 前端开发 程序员
Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想
Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想
7 0