iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue proxyTable的跨域中pathRewrite怎么配置
  • 316
分享到

vue proxyTable的跨域中pathRewrite怎么配置

2023-06-29 23:06:20 316人浏览 薄情痞子
摘要

这篇文章主要介绍了Vue proxyTable的跨域中pathRewrite怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue proxyTable的跨域中pathRewrite怎

这篇文章主要介绍了Vue proxyTable的跨域中pathRewrite怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue proxyTable的跨域中pathRewrite怎么配置文章都会有所收获,下面我们一起来看看吧。

    vue浏览器跨域问题和vue proxyTable跨域中pathRewrite配置

    vue浏览器跨域问题

    当浏览器报如下错误时,则说明请求跨域了。

    localhost/:1 Failed to load Http://www.thenewstep.cn/test/testToken.PHP: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:8080’ is therefore not allowed access. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

    为什么会跨域

    因为浏览器同源策略的限制,不是同源的脚本不能操作其他源下面的对象。

    什么是同源策略

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。

    可以说WEB是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

    简单的来说:协议、IP、端口三者都相同,则为同源

    解决办法

    跨域的解决办法有很多,比如script标签 、JSONp、后端设置cros等等…,但是我这里讲的是webpack配置vue 的 proxyTable解决跨域。

    pathRewrite

    简单来说,pathRewrite是使用proxy进行代理时,对请求路径进行重定向以匹配到正确的请求地址,

    dev: {    // Paths    assetsSubDirectory: 'static',    assetsPublicPath: '/',    proxyTable: {      '/api': {        target: 'http://XX.XX.XX.XX:8083',        changeOrigin: true,        pathRewrite: {          '^/api': '/api'   // 这种接口配置出来     http://XX.XX.XX.XX:8083/api/login          //'^/api': '/' 这种接口配置出来     http://XX.XX.XX.XX:8083/login        }      }    }  },

    如何不配置pathRewrite 请求就被转发到 http://XX.XX.XX.XX:8083 并把相应uri带上。

    比如:localhost:8080/api/xxx 会被转发到http://XX.XX.XX.XX:8083/api/xxx

    配置完成后需要重新编译一遍 , 调用接口的时候

            // 获取菜单权限      getPermission(){        this.$ajaxget({          url: '/api/getPermission',          data: {},          isLayer: true,          successFc: data => {            console.log(data.data)          }        })

    2种数据请求方式: fecth和axiOS

    1、fetch方式

    在需要请求的页面,只需要这样写(/apis+具体请求参数),如下:

    fetch("/apis/test/testToken.php", {      method: "POST",      headers: {        "Content-type": "application/json",        token: "f4c902c9ae5a2a9d8f84868ad064e706"      },      body: JSON.stringify(data)    })      .then(res => res.json())      .then(data => {        console.log(data);      });

    2、axios方式

    main.js代码

    import Vue from 'vue'import App from './App'import axios from 'axios'Vue.config.productionTip = falseVue.prototype.$axios = axios //将axios挂载在Vue实例原型上// 设置axios请求的tokenaxios.defaults.headers.common['token'] = 'f4c902c9ae5a2a9d8f84868ad064e706'//设置请求头axios.defaults.headers.post["Content-type"] = "application/json"

    axios请求页面代码

    this.$axios.post('/apis/test/testToken.php',data).then(res=>{        console.log(res)})

    代理配置proxy下pathrewrite失效踩坑

    从网上直接找到的代码复制过来报错,最后找了一下午为什么失效,最后发现问题直接破防了

    错误:

    pathRewrite: {   "  ^/api  "  : "" //若请求的路径在目标url下但不在/api 下,则将其转换成空  },

    正确:

    pathRewrite: {   "^/api": "" //若请求的路径在目标url下但不在/api 下,则将其转换成空   },

    原因:

    直接复制过来的 "  ^/api  "  : ""里面多了两个空格,判断url的时候就获取不到/api,删除空格就解决问题了

    关于“vue proxyTable的跨域中pathRewrite怎么配置”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue proxyTable的跨域中pathRewrite怎么配置”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: vue proxyTable的跨域中pathRewrite怎么配置

    本文链接: https://www.lsjlt.com/news/326672.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • c#文本框只读属性怎么设置
      c# 文本框只读属性的设置 问题:如何设置 C# 文本框的只读属性? 回答: 要设置文本框的只读属性,可以使用 ReadOnly 属性。 详细解释: ReadOnly 属性是一个布尔值属...
      99+
      2024-05-14
      c#
    • 如何使用 Golang ORM 工具与数据库交互?
      使用 gorm orm 工具与数据库交互,可通过以下步骤轻松实现:安装和初始化(1)、定义模型(2)、建立映射(3)、创建记录(4)、读取记录(5)、更新记录(6)、删除记录(7)、事务...
      99+
      2024-05-14
      golang orm mysql git iphone
    • c++中double与float的区别
      c++++ 中 double 与 float 的区别 在 C++ 中,double 和 float 都是浮点数类型,但它们在精度、范围和内存占用方面存在差异。 精度: double:双...
      99+
      2024-05-14
      c++ 内存占用
    • 如何在 Golang 中处理数据库错误?
      在 go 中处理数据库错误的步骤包括:使用专门的 go mysql 驱动程序。实现 error 接口以创建自定义错误。检测错误,记录足够的信息,并基于错误类型执行适当的恢复操作。 如何...
      99+
      2024-05-14
      golang 数据库错误 mysql git 数据丢失
    • c++中int怎么转string
      在 c++ 中将 int 转换为 string 的方法有:使用 to_string() 函数直接转换。使用 stringstream 类。使用 sprintf() 函数。 如何在 C+...
      99+
      2024-05-14
      c++
    • 优化 C++ 服务器架构以提高吞吐量
      优化 c++++ 服务器吞吐量策略:线程池:预先创建线程池,快速响应请求。非阻塞 i/o:在等待 i/o 时执行其他任务,提升吞吐量。http/2:使用二进制协议,支持多路复用和内容压缩...
      99+
      2024-05-14
      优化 服务器架构 c++
    • 使用 C++ 堆分配器管理服务器架构中的内存
      使用 c++++ 堆分配器管理服务器内存可提高性能和稳定性。堆分配器负责分配和释放动态内存,跟踪空闲/已分配内存元数据。在服务器架构中,它用于分配应用程序对象、缓冲区和数据结构。选择堆分...
      99+
      2024-05-14
      c++ 内存管理 并发访问
    • c#怎么获取字符串中的数字
      从 c# 字符串中提取数字的方法有五种:正则表达式、循环和 char.isdigit()、int.tryparse()、string.split() 和 int.parse()、linq...
      99+
      2024-05-14
      git c#
    • C++ 异常处理在服务器架构中的最佳实践
      c++++ 异常处理在服务器架构的最佳实践:定义清晰的异常层次结构,使用自定义异常类型封装相关信息。使用异常安全函数,及时在适当范围内处理异常。提供有意义的错误消息,帮助用户了解错误并采...
      99+
      2024-05-14
      c++ 异常处理
    • c#怎么拼接字符串
      在 c# 中拼接字符串有三种方法:使用加法(+)运算符、string.concat() 方法和 stringbuilder 类。最简单的方法是使用 + 运算符将字符串连接起来,...
      99+
      2024-05-14
      c#
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作