vue-cli3配置proxy解决前后端域名/端口不一致引起的跨域问题

2023-11-14

错误代码

前端

import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, axios)
this.axios.post('http://localhost:8082/account/signup', this.formValidate)

后端

@RestController
@RequestMapping("/account")
public class AccountController {

    @PostMapping(value = "/signup")
    @ResponseBody
    public JSONObject signup(@RequestBody User user)
    {
        JSONObject object = new JSONObject();
        object.put("type","success");
        object.put("message","注册成功");
        return object;
    }
}

报错

xhr.js?13a7:172 OPTIONS http://localhost:8082/account/signup 400

Access to XMLHttpRequest at 'http://localhost:8082/account/signup' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

原因:前端是8080端口,后端是8082端口,引发了跨域问题

解决方法

由于本人用的是vue-cli4.x(高于vue-cli3.0),因此要在项目根目录下新建一个vue.config.js文件,@vue/cli-service 会自动加载这个文件。关键代码如下:

module.exports = {
  // All options for webpack-dev-server are supported
  // https://webpack.js.org/configuration/dev-server/
  devServer: {
    // https://github.com/chimurai/http-proxy-middleware#proxycontext-config
    // axios跨域代理配置表,在这里可以配置特定的请求代理到对应的API接口
    proxy: {
      // 代理所有的以'/api'开头的浏览器请求
      '/api': {
        // 服务端域名和端口
        target: 'http://localhost:8082',
        // 如果设置成true:请求头中host会设置成target
        changeOrigin: true,
        // 用'/'替换浏览器请求url中的'/api',例如浏览器请求为http://localhost:8082/api/xxx,
        // 则对应的服务端接口为http://localhost:8082/xxx
        pathRewrite: {
          '^/api': '/'
        }
      }
    }
  }
}

并且,前端axios发送请求的url是不写域名的,所以,前端代码改为

this.axios.post('/api/account/signup', this.formValidate)

参考文章:

https://cli.vuejs.org/zh/config/#devserver-proxy

https://github.com/chimurai/http-proxy-middleware#proxycontext-config

https://github.com/chimurai/http-proxy-middleware#context-matching

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue-cli3配置proxy解决前后端域名/端口不一致引起的跨域问题 的相关文章

  • 如何使用 Axios 发布到 Django?

    我正在从 Jquery AJAX 迁移到 Axios 因为我使用的是 ReactJS 所以我认为它更干净 我在向服务器发布一个简单的请求时遇到了一些麻烦 post 方法会通过我的视图 但每当我print request POST 我有一个空
  • 我通过 Axios 来自 API 并使用 Vue 显示的数据未显示

    我刚刚开始学习 Vue Js 我试图从 API 中获取一些信息并将其显示在表格中 我真的看不出问题出在哪里 我彻底浏览了代码 但无法弄清楚问题出在哪里 下面是我写的代码 我很漂亮 这是一件小事 或者在当前版本的 Vue 中是否有新的方法来做
  • Node 中express.js 和 axios.js 的区别

    我们使用axios来进行get post等http请求 我们也出于同样的目的使用快递 然而 根据我读到的内容 它们有不同的目的 请解释一下如何 PS 如果能举例说明就太好了 你可以将express js视为一个仓库 app get item
  • Axios 通过 Django REST Framework 被 CORS 策略阻止

    我正在尝试使用 Axios 向我的 API Django REST Framework 发出请求 但出现以下错误 Access to XMLHttpRequest at http trvl hopto org 8000 api airpor
  • Vue Axios 动态 URL

    我想在 vue js 应用程序中动态创建 axios post 操作的 URL 路径 这是动作 editProduct function dispatch commit payload axios put http localhost 80
  • Axios - 删除带有请求正文和标头的请求?

    我在 ReactJS 中编程时使用 Axios 并假装向我的服务器发送 DELETE 请求 为此 我需要标题 headers Authorization 身体是由 var payload username 我一直在互联网上搜索 只发现 DE
  • 类型错误:func.apply 不是函数

    我正在尝试使用 useEffect 函数 如下所示 const data setData useState courses useEffect async gt const result await axios get http examp
  • 如何从 MongoDB 获取数据?

    我正在尝试使用 Express MongoDB 构建 React 应用程序 我能够将一些文档发布到 MongoDB 目前 我正在尝试弄清楚如何将获取的数据打印到屏幕上 我有这些路线 router post totalbalance requ
  • axios catch 没有捕获错误

    我在用着axios 0 17 0使用以下代码 this props userSignupRequest this state then res gt console log res data catch err gt this setSta
  • 在react js中调用axios get请求时出现网络错误

    我在 macOS 中使用 React js 当我尝试调用时axios get 我收到网络错误 我读过许多像我一样使用 React Native 的其他案例 答案是添加设置以允许他们使用http在 Mac 中而不是https 但是该设置不能在
  • 使用 axios 的 API 请求始终未经 Laravel API 的授权

    我正在使用一个个人项目Laravel https laravel com 5 6 和Axios https github com axios axios库 标准 Laravel5 6 https laravel com docs 5 6包裹
  • 如何对 axios 响应拦截器进行自定义错误代码检查?

    我在我的应用程序中使用 graphql 它错误地发送以下响应 您可能已经注意到 graphql 将所有错误作为状态代码 200 发送 我从 API 返回的错误位于data errors data errors message Error T
  • 使用拦截器延迟所有请求

    出于调试目的 我想延迟all请求 以便我可以模拟加载资源实际上需要时间 我想这可以在拦截器中以某种方式完成 我确实设法推迟single现在请求 const delay milliseconds gt new Promise resolve
  • vue.js 中的 $http.get() 与 axios.get() 有什么区别?

    我有点困惑理解之间的主要区别 http get and axios get 我查阅了很多资源 但没有得到满意的答案 有人可以帮我吗 http 是一个全局变量 可能是您在 vuejs 项目中定义的 请在您的项目中搜索 http 您可能会发现它
  • axios get 带有标头授权的请求在 Edge 浏览器上不起作用

    我在 vuejs 应用程序中使用带有标头的 axios get 请求 在 Chrome 和 Firefox 中工作正常并得到响应 但在边缘它不起作用 出现网络错误 我正在发送带有标题授权的请求 axios get url headers A
  • 为什么express服务器接收到的前端数据是未定义的?

    我目前正在开发社交媒体 Mern Stack React 应用程序 我使用 Node js 和 Express 作为我的后端服务 还使用 mongoose 来存储我的数据 并使用 axios 和 redux thunk 将后端连接到前端 到
  • Vue - API 调用属于 Vuex 吗?

    我正在努力寻找在 vue 模块中理想的 API 调用位置的答案 我不是在构建 SPA 例如 我的 auth 块有几个用于登录 密码重置 帐户验证等的组件 每个块都使用 axios 进行 API 调用 Axios 已经提供了异步的 Promi
  • Axios 使用 JSONPlaceholder 返回乱码

    我正在尝试学习使用 Axios 获取 API 数据 最终与 HubSpot API 一起使用 我已经建立了一个小型测试项目 尝试使用 fetch 和 Axios 从 JSONPlaceholder 和 RapidAPI FamousQuot
  • 从vue中的api加载路由

    我正在尝试从我的 API 在 Vue 应用程序中加载路由 我尝试将数据推送到路由变量并使用 addRoutes 方法 但没有运气 我认为异步可能存在问题 但为什么 addRoutes 不起作用 这是我的代码 import Vue from
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori

随机推荐

  • nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cann...

    org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist in pojo UserMapper xml C
  • React hooks + antd前台实现input搜索框实时搜索table表格

    阅读本文前提需掌握react hooks 中useState和useEffect基本用法 详见 可选链 语法糖 文章目录 实现效果 实现步骤 1 引入 2 初始化 3 筛选数据 4 输入和展示数据 实现效果 实现步骤 1 引入 Search
  • 基于单片机语音识别智能家居系统的设计与实现

    功能介绍 以STM32单片机作为主控系统 液晶显示当前环境温湿度 用电器开关状态 通过语音模块识别设定的语音 DHT11进行环境温湿度采集 通过语音播报模块报当前温湿度 智能回复 通过语音识别可以打开灯 窗帘 电视空调等设备 整个电路以5v
  • vue项目运行后如何自动在浏览器中打开

    方法一 配置open 在根目录webpack config js或vue config js中的module exports里面配置devServer open 将open属性值设置为true即可 devServer host localh
  • 总结-深度学习中的正则化方法(regularization)

    深度学习面临的非常严重的一个问题就是过拟合 overfitting 通过一些正则化的方法 可以消除过拟合 从而使我们的模型能够得到更好的效果 1 什么是正则化 这张图 我想接触过机器学习的朋友们应该都看了很多遍了吧 我们先从回归的角度来看待
  • Java编译运行命令

    javac 编译命令 javac是用来编译 java文件的 dos窗口直接输入javac可以看到大量提示信息 提示javac命令的用法 用法 javac
  • 电脑没有摄像头怎么办

    电脑没有摄像头怎么办 电脑没有摄像头但是需要用到摄像头怎么办 没有带数据线但是需要用到手机的摄像头怎么办 下面是采用软件的方式连接电脑作为电脑摄像头的方法 1 iVcam iVCam Use mobile phone as a PC web
  • 服务器简单的命令操作系统,服务器操作系统常用命令

    服务器操作系统常用命令 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 当您发现云服务器的运行速度变慢或云服务器突然出现网
  • 一、django错误集合

    1 django core exceptions ImproperlyConfigured WSGI application LARS wsgi application could not be loaded Error importing
  • 强迫自己学习Jquery三

    元素定位问题 offset 和 position必须要好好看一下 转载于 https www cnblogs com jamesldj p 3323707 html
  • 前端系列之jQuery(jQuery选择的艺术)

    一 jQuery是什么 是一款JavaScript库 方便地处理HTML 事件 动画等 html 处理HTML文档中的DOM节点 如添加 删除等 事件 通过jQuery对页面上的事件进行处理 动画 通过jQuery实现淡入 淡出 滑动等动画
  • node中文件的上传与下载

    一 node基于Express项目实现文件的上传 1 FormData对象 以对象的方式来表示页面中的表单 又称为表单对象 以key value的方式来保存数据 XMLHttpRequest对象可以轻松的表单对象发送的服务器端 1 使用构造
  • HJ9 提取不重复的整数

    描述 输入一个 int 型整数 按照从右向左的阅读顺序 返回一个不含重复数字的新的整数 保证输入的整数最后一位不是 0 数据范围 1 n 10 8 输入描述 输入一个int型整数 输出描述 按照从右向左的阅读顺序 返回一个不含重复数字的新的
  • 理解virt res shr之间的关系 - linux

    转自 https www orchome com 298 想必在linux上写过程序的同学都有分析进程占用多少内存的经历 或者被问到这样的问题 你的程序在运行时占用了多少内存 物理内存 通常我们可以通过top命令查看进程占用了多少内存 这里
  • Kafka权威指南

    第一章 初识Kafka kafka是一款发布订阅的消息系统 具体结构从大向下可以列举为 1个Kafka集群种有N个broker 一个broker有N个主题分区 broker指的是一个独立的Kafka服务器 主题指的是消息的分类 为什么要选用
  • SQLI-Labs(18-22关)请求头注入

    十八关 这里这个提示就是一些浏览器会记录我们的IP信息 那么记录了就会被存储到数据库中就有可能存在SQL注入 这里需要引入几个数据头信息 User agent 浏览器的身份识别字符串 简单来说就是根据这个字段来判断是通过PC端还是手机端访问
  • CentOS一键配置rsync服务器脚本

    1 保存下面的代码为一个文件 上传到服务器端 名称为rsync sh bin bash rsync Written by zhumaohai For more information please visit http www centos
  • JavaSE的复习:Java基本语法

    1 变量 变量的分类 按数据类型 对于每一种数据都定义了明确的具体数据类型 强类型语言 在内存中分配了不同大小的内存空间 弱类型语言则不用明确指明数据类型 例如js var 变量的分类 按声明的位置的不同 在方法体外 类体内声明的变量称为成
  • Oracle安装 在注册表中没有找到指定的主目录名 的解决方案

    在安装数据库的时候 报了个错 在注册表中没有找到指定的主目录名 解决方案就是 忽略 此错误并不影响Oracle的正常使用 亲测可行 也不排除不可用的情况 如果谁遇到了请告知 我将继续补充
  • vue-cli3配置proxy解决前后端域名/端口不一致引起的跨域问题

    错误代码 前端 import axios from axios import VueAxios from vue axios Vue use VueAxios axios this axios post http localhost 808