提问者:小点点

Axios post请求在提交时引发431错误


一旦从注册表页面提交了axiospost请求,就会获得状态代码431I,我正在关注它的实现。我在包中添加了一个代理。json:“代理”:http://localhost:3000",

错误脱轨: 431(请求报头字段太大)调度Xhr请求@xhr.js:178错误:请求失败,状态代码431在createError(createError.js:16)

node version: v12.16.2
"axios": "^0.19.2",
"react": "^16.13.1",

//反应钩代码:

import axios from "axios";

const axios = Axios.create({
  baseURL: 'http://localhost:3000/',
   headers: {
    "Content-type": "application/json"
  }
})

//服务/注册服务。js

import http from "../http-common";


const createPlayer = data => {
  return http.post("/register", data);
};

const updatePlayer = (id, data) => {
  return http.put(`/register/${id}`, data);
};

const removePlayer = id => {
  return http.delete(`/register/${id}`);
};


export default {
  createPlayer,
  updatePlayer,
  removePlayer
};

//登记册

const Register = () => {

    const [register, setRegister] = useState({
        _id: '', profileImage: '', firstName: '', lastName: '',
        selectRole: ''
    })
    const handleSubmit = (e) => {
        e.preventDefault()
        const registerData = { profileImage: register.profileImage, firstName: register.firstName, lastName: register.lastName, selectRole: register.selectRole }
        axios.post('http://localhost:3000/register', registerData)
    }
    const onChange = (e) => {
        e.persist();
        setRegister({ ...register, [e.target.name]: e.target.value });
    }
    return (
        <div className="register_wrapper">
            <div className="register_player_column_layout_one">
                <div className="register_player_Twocolumn_layout_two">
                    <form onSubmit={handleSubmit} className="myForm">
                        <div className="formInstructionsDiv formElement">
                            <h2 className="formTitle" >Sign Up</h2>
                            <p className="instructionsText">Not registered yet, please register now !</p>
                            <div className="register_profile_image">
                                <input id="profilePic" name="profileImage" type="file" onChange={onChangePicture} />
                            </div>
                            <div className="previewProfilePic" >
                                <img onError={addDefaultSrc} name="previewImage" className="playerProfilePic_home_tile" src={picture}></img>
                            </div>
                        </div>
                        <div className="fillContentDiv formElement">
                            <div className="names formContentElement">
                                <input className="inputRequest " name="firstName" type="text" placeholder="First Name" onChange={onChange} />
                                <input className="inputRequest " name="lastName" type="text" placeholder="Last Name" onChange={onChange} />
                            </div>
                            <label>
                                <div className="select" >
                                    <select name="selectRole" id="select" onChange={onChange}>
                                        <option value="member">Member</option>
                                        <option value="admin">Admin</option>
                                    </select>
                                </div>
                            </label>
                        </div>
                        <div className="submitButtonDiv formElement">
                            <button type="submit" className="submitButton">Register</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    );
}

export default Register;


共3个答案

匿名用户

我过去也遇到过类似的问题,这是由请求头授权中的一个很长的令牌引起的。我认为问题不在于axios或其他什么,而在于页眉的大小。你也可以发布你的标题吗?

编辑1:根据这个答案,您还应该增加api服务中的最大http头大小(如何修复React Redux应用中431个请求头字段过大)

匿名用户

我不知道这是个好答案。但这对我有用。

只需关闭选项卡,然后重新运行程序。它修复了这个错误。

匿名用户

维基百科上说

443错误可能是由windows系统文件损坏引起的。损坏的windows系统文件条目可能会对计算机的健康构成真正的威胁。

可能有许多事件导致系统文件错误。不完整的安装、不完整的卸载、不正确的删除应用程序或硬件。如果您的计算机从病毒或广告软件/间谍软件攻击中恢复,或者由于计算机的不正确关闭,也可能导致此问题。上述所有活动都可能导致删除或损坏windows注册表中的条目。此损坏的注册表将导致应用程序正常运行所需的信息和文件丢失或链接错误。

有两(2)种方法修复443错误:

  • 启动您的计算机并以管理员身份登录。
  • 单击开始按钮,然后选择所有程序、附件、系统工具,然后单击系统还原。3)在新窗口中,选择“将我的计算机恢复到更早的时间”选项,然后单击下一步。4)从“在此列表上,单击还原点”列表中选择最近的系统还原点,然后单击下一步。5)在确认窗口点击下一步。6)恢复完成后重启电脑。

另外还有一个非常好的包调用npm i axios-es6-class,它允许您将axios用作es6类和其他东西。