我正在通过使用 Redux 的 youtube 上的 MERN 注册/登录身份验证教程。当尝试在 Postman 中将测试用户发布到服务器时,我收到 431 标头请求太大错误响应。
我在某些地方读到清除浏览器中的缓存/历史记录是可行的,所以我尝试过但无济于事。我还在标题请求中添加了一个“Clear-Site-Data”:“*”条目(除了“Content-Type”:“application/json”),它也不起作用。
用于注册的客户端代码
onSubmit = e => {
e.preventDefault();
const { name, email, password } = this.state;
const newUser = {
name,
email,
password
};
this.props.register(newUser);
};
//redux actions
export const register = ({ name, email, password }) => dispatch => {
const config = {
headers: {
"Content-Type": "application/json",
"Clear-Site-Data": "*"
}
};
// Request body
const body = JSON.stringify({ name, email, password });
axios
.post('/api/users', body, config)
.then(res =>
dispatch({
type: REGISTER_SUCCESS,
payload: res.data
})
)
.catch(err => {
dispatch(
returnErrors(err.response.data, err.response.status, 'REGISTER_FAIL')
);
dispatch({
type: REGISTER_FAIL
});
});
};
注册用户应该向我连接的 Mongo db 发送名称、电子邮件和密码,但是,它停止了我并且 redux 命中了我创建的 REGISTER_FAIL 类型,返回 431 错误。任何帮助将不胜感激。谢谢!
原文由 Brent Abruzese 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在我的 Angular 应用程序中遇到了同样的问题。花了很多时间后,我发现问题与 Node JS 有关。我们使用的是 Node JS v12.xx,在这个版本中,max-http-header-size 从 80KB 减少到 8KB。我拥有的授权令牌大约为 10KB。这就是为什么当我重新加载应用程序时,浏览器开始为某些文件提供“431 请求标头字段太大”错误。我已经更新了 Node JS v14.xx,它又开始工作了,因为在 v14.0.0 中,max-http-header-size 已经增加到 16KB。
希望它会有所帮助。