场景:上传图片给服务端,将图片转为BASE64字符串,通过http请求上送json数据方式实现图片上传,接口报错:“请求报文实体过大”
分析:
1,图片转换为BASE64字符串,大小会增加约30%(基本原理:3字节一组转换为4字节一组)
2,http请求JSON报文大小一般建议不超过200kb,否则加解密过程会很慢
3,服务器、网关等一般都会限制报文大小,比如Nginx默认限制报文大小为1M,超过这个大小就会报上面这个错
解决方法:
1,上传文件更适合采用文件流的方式,几十kb以内的小图片可以转为BASE64字符串通过JSON方式上传。【推荐文件流方式上传文件】
2,找运维修改服务器/网关配置,比如Nginx配置,将报文大小限制提高到比如50M:打开nginx.conf,在http{ }中设置:client_max_body_size 50m
不推荐这种做法,因为可能会引发别的问题,比如Nginx缓存区撑爆、接口超时、浏览器对大报文请求的拦截等问题。
【前端笔记】网络请求问题:413 request entity too large
于 2023-04-09 06:56:12 首次发布