起因
这次的项目使用的是后端返回的token来进行接口请求登录验证,由于后端没有进行优化,当权限过多时造成了前端请求时报错431,这我就头大了,接下来都无法进行开发了。当然这是在开发环境下,部署之后使用nginx的话可以直接设置请求头的大小,那个就不说了。
后续方法
一开始在网上找了很多方法,如果使用的是vue-cli构建的项目,启动时使用的也是vue的vue-cli-service.js启动项目。只要在node_modules中找到.bin文件夹下的vue-cli-service.cmd文件,添加如下内容

"--max-http-header-size=1000000"

当然size的数值随你写,越大越好。
具体内容如下

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%" "--max-http-header-size=1000000" "%dp0%\..\@vue\cli-service\bin\vue-cli-service.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

此时重启项目就没有问题了,需要注意的是我是用的node版本是v14.17.6。
使用老版本webpack的项目
还有一个项目我是用的是"webpack-dev-server": “^2.9.1”。曾经我的node版本是12左右的,这时候在.bin/webpack-dev-server.cmd文件中插入"–max-http-header-size=1000000"并没有生效,反而在终端报错了,虽然不影响代码运行,但是431的问题任然没有解决。
然而就在今天,没错,就是今天2022年2月22号的后一天,我无聊试了下,成功了?就这么突然的成功了?

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%" "--max-http-header-size=1000000" "%dp0%\..\webpack-dev-server\bin\webpack-dev-server.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

齐活,这是本地开发时的问题,如果是部署后出现431,name就需要后端去配置了。

前端怎么解决300 Multiple Choices 前端怎么解决接口431报错_vue.js


求大佬告诉我这是为啥,工作之余写的,没有太多时间去查找原因,如果有大佬知道求踢!!!!!!!!!

2022年的10月17日我可算是知道为啥有些项目可以,有些项目不可以了。
用上面的方法你可以把较老的项目配成功,一些较新的项目不成功是因为我们需要看你的package.json文件中启动项使用的到底是哪种方法,例如:

前端怎么解决300 Multiple Choices 前端怎么解决接口431报错_启动项_02


这里使用的是webpack的启动,所以我们需要用最上面的方法。如果是以下:

前端怎么解决300 Multiple Choices 前端怎么解决接口431报错_vue.js_03


这里是vue-cli-service,所以我们同样的找到node_modules下面的.bin文件中的vue-cli-service.cmd文件,改写方法如出一辙,唯一不同的地方就在于改写的文件不同,还有一点要注意的是,不要把后面启动的代码复制错了,奉上改写的代码:

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)
//下面这一句是改写的地方
"%_prog%" "--max-http-header-size=1000000" "%dp0%\..\@vue\cli-service\bin\vue-cli-service.js" %* 
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b