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

前言

     本文转载自: www.microblog.store,且已获得授权.

一、问题背景

     自己写的网站频繁出现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

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值