记一次接口状态码200但是浏览器解析数据失败
2022/4/15 6:14:10
本文主要是介绍记一次接口状态码200但是浏览器解析数据失败,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
表象
浏览器表象
错误信息 net::ERR_CONTENT_DECODING_FAILED 200 (OK)
排查
网关(底层是nginx) -> nginx -> 服务
网关负载nginx, nginx再负载服务, 这条链路, 就会报上面的错误
网关(底层是nginx) -> 服务
网关直接负载服务, 这条链路, 就不会报错
直接调用接口是好的, curl等, 但是在浏览器中就会报错
于是对比了两种方式, 响应header的内容
net::ERR_CONTENT_DECODING_FAILED 200 (OK)
再加上报错的内容, 虽然http状态码200了, 但是浏览器解析失败,
但是直接调用接口是好的, 说明数据不对, 导致浏览器解析不了
对比了一下, 在response headers中, 一个有content-encoding: gzip
一个没有, 所以
我怀疑数据经过两次gzip, 浏览器只解压了一次, 导致解压的数据还是gzip, 所以浏览器解析数据失败
因为网关底层也是nginx, gzip也是开启
修改及测试(解决)
我把这条报错的链路, 网关(底层是nginx) -> nginx -> 服务
修改nginx配置, 把nginx动态代理这个服务的gzip配置关掉
# 修改配置 cd /usr/local/nginx/conf/ && vim nginx.conf gzip off; # 修改后重启 nginx -s reload
之所以要在location /后面加, 思想就是哪一块有问题, 修改哪一块, 不动其他的地方.
修改后重启nginx
再次访问, 发现ok了, 证明猜想正确!
对比
对比了一下两次的时间, 没有差距
这篇关于记一次接口状态码200但是浏览器解析数据失败的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?