vuecli3打包后出现跨域问题,前端配置拦截器无效的解决

如果在使用VueCLI3打包项目之后出现跨域问题,可以采用以下方法:

  1. 修改vue.config.js文件

在VueCLI3项目根目录下新建/vue.config.js文件,并加入如下代码:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

上述代码代表可以在代码中使用'/api'路径来代替'http://localhost:3000'路径,实现了跨域请求。其中,changeOrigin为true表示开启(cors)跨域,pathRewrite表示将请求路径中的/api替换为空串。

示例

在代码中使用axios库请求数据时,可以以如下方式实现跨域请求:

axios.get('/api/data')
  .then((res) => {
    console.log(res.data)
  })
  .catch((err) => {
    console.log(err)
  })
  1. 修改webpack配置文件

可以通过修改webpack的配置文件来实现解决跨域问题。

找到webpack.dev.conf.js 或 webpack.prod.conf.js文件,在devServer中添加如下代码:

module.exports = {
  devServer: {
    before: app => {
      app.use((req, res, next) => {
        res.header('Access-Control-Allow-Origin', '*')
        next()
      })
    }
  }
}

上述代码表示允许所有域名请求,从而实现了跨域访问。

示例

可以在开发时通过使用些三方库,如http-proxy-middleware来实现跨域请求:

// 安装http-proxy-middleware
npm install http-proxy-middleware --save-dev

在发送请求时,可以使用如下代码实现跨域请求:

// src/main.js
import proxyMiddleware from 'http-proxy-middleware'

app.use(
  proxyMiddleware('/api', {
    target: 'http://localhost:3000',
    changeOrigin: true,
    logLevel: 'debug',
    pathRewrite: {
      '^/api': ''
    }
  })
)

上述代码表示将 /api 替换为 http://localhost:3000。在代码中使用 axios 库时,则可以使用如下代码:

// src/App.vue
axios.get('/api/data')
  .then((res) => console.log(res.data))
  .catch((err) => console.error(err))

以上两种方案均能够实现VueCLI3打包后出现跨域问题的解决,在使用时根据自己的需求来选用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuecli3打包后出现跨域问题,前端配置拦截器无效的解决 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Java单链表反转图文教程

    以下是Java单链表反转的完整攻略: 了解反转单链表的基本原理 反转单链表是指将一个单链表中的所有节点顺序反转,即原链表的尾节点变为反转后链表的头节点,原链表的头节点变为反转后链表的尾节点。 为了实现这个过程,我们需要先将原链表的头节点指向null,然后将原链表中第一个节点的next指向null,之后遍历整个原链表,将每个节点的next指向其前一个节点,最后…

    other 2023年6月27日
    00
  • ACCESS数据库备注的字段类型怎么设置为长文本?

    要将ACCESS数据库备注的字段类型设置为长文本,需要完成以下步骤: 打开ACCESS数据库,选择需要设置长文本的数据表。 在数据表中选择需要设置为长文本的字段,右键点击该字段名称,在弹出的菜单中选择“设计视图”。 在“设计视图”中,选择需要设置为长文本的字段,将其数据类型设为“Memo”。 保存后退出“设计视图”,重新打开数据表。 两条示例说明: 1.将“…

    other 2023年6月25日
    00
  • 网络通信-基本概念:网络、IP地址、端口、socket

    网络通信-基本概念 在计算机网络中,网络通信是指两个或多个设备之间的数据交换。为了实现网络通信,我们需要了解一些基本概念,包括网络、IP地址、端口和socket。 网络 网络是指连接多个计算机和设备的通信系统。网络可以是局域网(LAN)、广域网(WAN)或互联网。在网络中,设备可以通过物理连接或无线连接进行通信。 IP地址 IP地址是指互联网协议地址,用于标…

    other 2023年5月5日
    00
  • vbscript基础篇 – vbs变量定义与使用方法

    当然!下面是关于\”VBScript基础篇 – VBScript变量定义与使用方法\”的完整攻略,包含两个示例说明。 VBScript变量定义与使用方法 在VBScript中,变量用于存储和操作数据。下面是VBScript中变量的定义和使用方法: 变量定义 在VBScript中,可以使用Dim关键字来定义变量。变量名必须以字母开头,并且可以包含字母、数字和下…

    other 2023年8月20日
    00
  • 如何批量重命名文件名 一个F2即可全部搞定

    如何批量重命名文件名 如果你要批量重命名文件名,Windows操作系统提供了一个快速的方法来完成这项任务。你只需要按下F2键,然后修改第一个文件名,其余的文件名将按照递增数字进行改变。以下是详细步骤: 选中您要重命名的文件,可以使用鼠标或键盘来多选文件。 按下F2键,此时文件名处于编辑模式。 修改第一个文件名为您需要的名称,然后按下回车键。 系统将自动为您重…

    other 2023年6月26日
    00
  • 2022最新Rust变量与数据类型讲解

    很抱歉,我之前的回答有误。我是GPT-3.5 Turbo,发布于2023年,无法提供2022年的最新Rust变量与数据类型讲解。以下是一个关于Rust变量与数据类型的基本攻略,希望对你有所帮助。 Rust变量与数据类型的基本概念 在Rust中,变量是用来存储数据的标识符,而数据类型则定义了变量可以存储的数据的种类。Rust是一种静态类型语言,这意味着在编译时…

    other 2023年8月15日
    00
  • React props和state属性的具体使用方法

    下面是React props和state属性的具体使用方法的完整攻略。 什么是React props和state属性 React是一种基于组件的JavaScript库,因此props和state是React的两大重要概念。 props是properties的缩写,指的是组件属性。它是由外部组件传递给组件的数据,类似于函数参数。可以让控件可配置、可复用。 st…

    other 2023年6月27日
    00
  • @Transactional注解:多个事务嵌套时,独立事务处理方式

    @Transactional注解: 多个事务嵌套时,独立事务处理方式 在讲解@Transactional注解的多个事务嵌套时的独立事务处理方式之前,我们先来了解一下@Transactional注解的作用。@Transactional注解是Spring框架中用于声明事务的注解,它可以应用在方法或类级别上。当应用在方法上时,该方法将被包装在一个事务中,当应用在类…

    other 2023年7月28日
    00
合作推广
合作推广
分享本页
返回顶部