microblog | 微博客
原创
访问
0
获赞
0
评论
相关推荐
暂无数据
最新文章
暂无数据
热门文章
暂无数据

http状态码413,并提示Request Entity Too Large

写完bug就找女朋友 2024年04月12日 16:27:53 1 358 0
分类专栏: NuxtJs SpringCloud Vue 文章标签: HTTP cookie

一、问题背景

     自己写的网站频繁出现413状态异常问题并且提示Request Entity Too Large,导致需要频繁删除本地cookie;排查了二级域名下的网站发现没有这个问题;一路查下来发现是宝塔使劲往cookie里面塞各种垃圾缓存,导致请求服务的时候后端服务器爆掉,二级域名下的cookie就干干净净的,如下图:
image.png

image.png

     二级域名网站下面cookie很干净,能够顺利访问:

image.png

二、分析问题

     默认情况下,HTTP请求会将同一域名下的所有cookie都发送到后台服务器。这是HTTP协议中cookie机制的一部分。当浏览器发送HTTP请求时,它会检查请求的URL的域名,并查找与该域名相关联的所有cookie。然后,浏览器会将这些cookie添加到HTTP请求头中的Cookie字段,并随请求一起发送到服务器。

     这种机制使得服务器能够识别和跟踪客户端的会话状态。服务器可以根据接收到的cookie信息来识别用户身份、维护会话数据或执行其他与客户端状态相关的操作。

     所以,综上,产生请求服务频繁产生413的原因就是: 宝塔服务使劲往cookie里面堆屎+HTTP请求默认会把同域下所有的cookie都发送给后端(其实就是我没有针对性处理)。

三、解决问题

     知道了产生413问题的根本原因以后,我们就可以对症下药进行处理了: 在请求拦截器里面统一拦截请求,过滤掉无用cookie数据:

export default ({store, route, redirect, $axios, req}) => { //请求拦截器 $axios.onRequest(config => { // 请求头添加token const accessToken = store.state.accessToken ? store.state.accessToken : ""; const refreshToken = store.state.refreshToken ? store.state.refreshToken : ""; //添加请求头 if (accessToken !== "") { //Authorization: Bearer token //固定格式 config.headers.Authorization = 'Bearer ' + accessToken } // 只向后端传递需要的cookie,解决频繁出现413问题 config.headers.Cookie = ''; config.headers.Cookie = `accessToken=${accessToken};refreshToken=${refreshToken}`; return config }) //.... }

成功请求:

image.png



评论区

登录后参与交流、获取后续更新提醒

目录
暂无数据