499错误码,client closed request,通常表示客户端关闭了连接,在服务器完全接收请求之前,客户端已经中断了连接。
省流:前端发起请求,前后端建立了连接后,由于传输时间太长,超过了前端设置的超时时间后,前端报错timeout并取消请求,后端提示499client closed request。
什么情况下遇到的499?
实现了一个前端上传文件,后端保存到数据库的功能。前端使用el-upload选中文件后,触发change事件,通过change事件来调用后端保存二进制文件的接口。
某次当选取的文件较大时,在一定时间后,前端报错timeout,ngnix提示499错误。
为什么会遇到499?
超时时间设置得太短,以至于在服务器开始处理请求之前,客户端就因为超时而关闭了连接。在axios配置中修改timeout时间可以解决这个问题。
当文件较大时,上传所需的时间自然会更长。如果设置的超时时间(timeout)较短,而文件上传所需时间超过了这个阈值,那么就会触发超时。
建立连接后,文件传输的时长超过了timeout,由于文件还没完全传输,后端不会给出返回信息,此时前端取消请求,因此会报client closed request。
为什么浏览器控的network中没有后端返回的接口响应?
一开始我也很疑惑,为什么network中并没有接口的响应,后端那边也没有提示该接口被触发。既然都没有响应,那又何来的client closed request?后端甚至“不知道”有request。
其实不然。
上传文件时,客户端(即你的浏览器或前端应用)会尝试与服务器建立TCP连接。这是通过TCP握手(three-way handshake)完成的,确保双方都能发送和接收数据。
el-upload组件在上传文件时,实际上是封装了底层的HTTP请求



被折叠的 条评论
为什么被折叠?



