先上报错图:

直接说结果吧,跟你是否启用了mock.js有关

由于我的前端框架采用了VueElementAdmin,这个框架内置了mockJS的模拟数据。所以我默认也采用了这个配置。

写于2022-07-24 23:08:

下面文章仅供参考。目前而言,在不使用MockJS的情况下(尤其是那个mockserver.js),不管怎么配,是不会有问题的。但是一旦混合引入,就会出问题。下面文章仅供参考,关键是你是否引用了mockServer。

前端采用的是axios作为请求框架,关键代码如下:

import axios from 'axios'// 创建axios实例
const service = axios.create({baseURL: 'http://127.0.0.1:95', // url = base url + request urlwithCredentials: true, // send cookies when cross-domain requeststimeout: 5000 // request timeout
})export default service

主要的后端代码如下:

const express = require('express')
const server = express()const startServer = () => {server.use(express.json())server.use(express.urlencoded({ extended: true }))server.post('/home/login', (req, resp) => {console.log(req.query)resp.send({code: 200})})const { port, hostName } = $serverConfigserver.listen(port, hostName, () => {console.log(`服务已经启动:http://${ hostName }:${ port }`)})
}

另外,因为要解决跨域问题,前端使用了代理:

'use strict'
const path = require('path')
const defaultSettings = require('./src/settings.js')function resolve(dir) {return path.join(__dirname, dir)
}const name = defaultSettings.title || 'vue Admin Template' // page titleconst port = process.env.VUE_APP_PORTconst baseApi = process.env.VUE_APP_BASE_APIconst targetApi = process.env.VUE_APP_TARGET_APIconst pathRewrite = process.env.VUE_APP_REWRITE_PATHmodule.exports = {publicPath: '/',outputDir: 'dist',assetsDir: 'static',lintOnSave: process.env.NODE_ENV !== 'production',productionSourceMap: false,devServer: {port: port,open: true,overlay: {warnings: false,errors: true},proxy: {[baseApi]: {target: targetApi,changeOrigin: true,pathRewrite: {['^' + baseApi]: pathRewrite}}},before: require('./mock/mock-server.js')}
}
# just a flag
ENV = 'development'
VUE_APP_ENV='development'# base api
VUE_APP_BASE_API = '/dev-api'
VUE_APP_REWRITE_PATH = ''
# 页面服务端口
VUE_APP_PORT = 4310
# 目标转发地址
VUE_APP_TARGET_API='http://127.0.0.1:95'

分析

axios默认的header里面的content-type就是application/json。然后后端的解析也是json形式。可是采用了这个mockJS的mock-server后改变了传输形式,导致不能识别。解决办法也很简单,在axios创建的时候指定header的content-type:

const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // url = base url + request urlwithCredentials: true, // send cookies when cross-domain requeststimeout: 5000, // request timeoutheaders: {'Content-Type': 'application/json; charset=UTF-8;'}
})

然后express那边可以不用配接收的header,默认是识别content-type的,当然配置也可以,可以使用下面的模板,增加中间件:

server.all("*", function (req, res, next) {//设置允许跨域的域名,*代表允许任意域名跨域res.header("Access-Control-Allow-Origin", "*")//允许的header类型res.header("Access-Control-Allow-Headers", "*")//跨域允许的请求方式res.header("Access-Control-Allow-Methods", "*")res.header("Access-Control-Allow-Credentials", "true")if (req.method.toLowerCase() == 'options') {res.send(200)  //让options尝试请求快速结束} else {next()}

比较暴力,全部放开。当然,可以按需更改。

NodeJS使用Express框架进行POST请求报“BadRequestError:request aborted”相关推荐

  1. Nodejs之Express框架

    Nodejs之Express框架 Express 简介 安装 Express 第一个 Express 框架实例 请求和响应 路由 静态文件 GET 方法 POST 方法 文件上传 Cookie 管理 ...

  2. 在nodeJs的Express框架下用TypeScript编写router路由出现import关键字错误的解决方案

    在nodeJs的Express框架下用TypeScript编写router路由出现import关键字错误的解决方案 参考文章: (1)在nodeJs的Express框架下用TypeScript编写ro ...

  3. NodeJS,EXpress框架的一知半解

    一,什么是nodejs node.js是一个基于chrome V8引擎的JavaScript运行环境 (node.js并不是一门新的语言) 二.node.js的特点 1.事件驱动 2.非阻塞I/O 3 ...

  4. Ajax学习:nodejs安装+express框架介绍

    ajsx应用中,需要安装nodejs环境 基于Chrome V8引擎(和浏览器上的谷歌的解析引擎一样)JavaScript运行环境 (31条消息) Node.js_安装_哇嘎123的博客-CSDN博客 ...

  5. (九)nodejs循序渐进-Express框架(进阶篇)

    Express 框架 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...

  6. nodejs安装express框架

    安装express框架 npm install express -gd -g代表安装到NODE_PATH的lib里面,而-d代表把相依性套件也一起安装.如果沒有-g的话会安装目前所在的目录(会建立一个 ...

  7. 网购电商管理系统 nodejs中express框架 mysql数据库 web开发 B/S框架 ejs模板 简单服务器开发

    背景介绍 这个"大项目"开发背景是大二上的C++课设,王老师不明所以的就让我们制作一个类商用的网店管理系统,而且不限制语言,不限制框架,独立完成,时间大约10周.说实话这个项目对刚 ...

  8. 【SpringBoot的坑】Restful请求报错Request method 'POST' not supported,HiddenHttpMethodFilter无法将POST转换为PUT原因分析

    直接上结论: 因为 SpringBoot 版本原因,在我目前使用的 2.2.4 版本中,需要在springapplication.xml文件中 添加配置: spring.mvc.hiddenmetho ...

  9. 微信小程序网络请求异常怎么办_解决·微信小程序开发-网络请求报Invalid request 400错误...

    今天学习了一下微信小程序的入门开发,在使用网络请求时,发现根据微信官方的API的方法进行操作出现Invalid request 400错误,到底怎么回事呢? 首先我们来看微信API网络请求 示例代码: ...

最新文章

  1. JavaScript 对大小写敏感
  2. php 表单处理,用PHP提交from表单的处理方法
  3. 国产半导体路在何方,瓦森纳与光刻机你了解多少
  4. oracle布尔true 1,将.NET布尔数据类型映射到实体框架中的oracle数(1,0)会抛出错误
  5. python观察日志(part1)--字典反向查找
  6. linux查看ko信息,linux 查看信息命令
  7. Qt中如何获得文件和文件夹的路径信息
  8. 视频 java 我行我素管理系统 随堂视频
  9. hnu暑期实训之数塔 巧妙地设定一个偏移量
  10. 初学者虚拟机使用虚拟机
  11. jquery表单选择器input、:text、:password、:radio、:checkbox、:submit、:reset、:image、:button、:file、:hidden
  12. 拦截导弹(CDQ分治,DP)
  13. override 与virtual的理解
  14. CLR via C#深解笔记四 - 方法、参数、属性
  15. 微信小程序在线预览PDF格式文件
  16. 极品飞车ol服务器连接不稳定,极品飞车OL常见客户端问题有哪些_客户端问题解决方法_3DM网游...
  17. 阿帕虎题库管理系统服务器,阿帕虎题库管理系统
  18. Python redis安装使用教程
  19. 电脑取消撤销快捷键是什么_用快捷键如何撤销当前操作?(记住电脑快捷键秒变电脑老司机)...
  20. java 某年某月的天数_1160-C语言实验——某年某月的天数-JAVA

热门文章

  1. 查看一篇SCI是几区的等信息的方法
  2. 【ElasticSearch】学习笔记(三)es的高级操作
  3. 数据报告 | 2018年中国城市通勤研究报告(附图表)
  4. TARS-PHP:PHP构建高性能RPC框架
  5. These dependencies were not found:* core-js/modules/es.array.filter.js * core-js/modules/es.object.t
  6. 聚观早报 | 保时捷市值超母公司大众;3D打印肉将投入商业领域
  7. 圆柱面展开为平面的Fortran 程序
  8. windows电脑手机软件--下载网站
  9. IDEA完成登录servlet功能(连接云数据库)
  10. HDU 4966 - GGS-DDU (最小树形图)