首页 > 其他分享 >vite+vue跨域

vite+vue跨域

时间:2023-02-27 17:12:48浏览次数:44  
标签:vue http 跨域 localhost 服务器 vite

vue3学习中被问到一个问题:怎么解决跨域?

在vue之前的web中,解决跨域的问题最常用有效的方法服务器代码中添加Access-Control-Allow-Origin的响应header,告诉浏览器不阻拦当前地址的请求。假设服务器不允许修改响应header,还有一种称为jsonp的技术,http://localhost?callback=func(),请求完成后自动执行回调函数,这种方法似乎不是很适合vue中使用。因此vue的前后端分离的项目中怎么解决跨域呢?

axios.get("http://localhost/api/request.php").then(function (response) {
  console.log(response);
});

 

 后端请求地址:http://localhost/request.php,前端地址使用vite默认的:http://127.0.0.1:5173/

由于项目使用vite构建,在vite的文档中找到了答案,在本地服务器中开启代理,将对后端服务器的请求,转化成对前端服务器的请求,如此则不存在跨域问题,前端服务器再去请求真正的后台服务器,最后前端服务器再将请求回来的数据返回给浏览器。

新增vite.config.js,在文件中添加以下代码(主要是server中proxy配置代理的配置):

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";

export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      "/api": {
        target: "http://localhost/",
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
    },
  },
});

 请求:

axios.get("/api/request.php").then(function (response) {
  console.log(response);
});

 

 

 

过程中踩的坑:

习惯了使用vscode的插件phpserver,在页面上右键直接运行当前php文件,显示正常

  然后将上面server的proxy配置的target改为 "http://localhost:3000/",命令行却出错了,前端请求的地址也没有得到正确的响应。

 这个问题困扰我很久,然后换到xampp的 http://localhost/ 前端请求得到了正确的响应。

 

标签:vue,http,跨域,localhost,服务器,vite
From: https://www.cnblogs.com/caroline2016/p/17160285.html

相关文章

  • Vue急速入门-6
    纯净的Vue项目#安装依赖cnpminstall#做成纯净的vue项目-第一步:在router的index.js中删除about的路由-第二步:删除所有小组件和about页面组件-第三步:App.vue只留......
  • Vue3开发效率总结
    https://zhuanlan.zhihu.com/p/601715098依赖注入依赖注入:将实例变量传入到一个对象中去在Vue中父组件中声明依赖,将他们注入到子孙组件实例中去,很大程度上代替全局状态......
  • Vue2之v-model双向绑定原理
    一、简介v-model实现双向绑定的语法糖,常用于表单与组件之间的数据双向绑定.二、表单实现双向绑定1.原理分两步骤v-bind绑定一个value属性v-on指令给当前元素绑定inp......
  • npm安装@vue/cli报错原因之一
    @目录最终解决方案为:使用cnpm下载vue-cli,下面是我的问题和解决方法,可以供你借鉴起初安装过程中报错为这个npmWARNdeprecated@hapi/[email protected]:Thisversionhasbee......
  • 实现百度下拉菜单实例(利用jsonp跨域请求百度数据接口)
    JSONP:是JSON withpadding(填充式JSON或参数式JSON)的简写,它由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,回调函数的名字一般是在请求中指定......
  • vue 运行步骤(使用cnpm)
    运行教程首先,列出来我们需要的东西:node.js环境(npm包管理器)vue-cli脚手架构建工具cnpmnpm的淘宝镜像从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以......
  • vscode跟踪vue代码方法
    首先安装插件同时打开上面的右边的齿轮图标,就是打开文件launch.json{//UseIntelliSensetolearnaboutpossibleattributes.//Hovertoviewdescriptionsof......
  • vue中解决一个部门不能选择的问题
    问题如下:就是在提交流程进行表单申请的时候,上面按用户选择的时候出现下面界面 结果最下面两个用户与按钮都按不了,不知道是什么原因。后来跟踪发现下面问题这个层面上面都......
  • vuex中commit和dispatch的区别
    一直都没整明白commit和dispath的区别,今天总算整明白了1、commit和dispatch的区别commit和dispatch的区别在于commit是提交mutatious的同步操作,dispatch是分发actions的......
  • Vue虚拟dom是如何被创建的
    先来看生成虚拟dom的入口文件:...import{parse}from'./parser/index'import{optimize}from'./optimizer'import{generate}from'./codegen/inde......