前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >兴师动众解决由cookie引发的400报错问题

兴师动众解决由cookie引发的400报错问题

作者头像
全栈程序员站长
发布2022-06-29 09:10:14
8500
发布2022-06-29 09:10:14
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

背景是这样的,做的是一个机票的购票业务,包括了购票(单程购票和往返购票)等功能。购票的航班信息需要从航班搜索页带到下单页,所以在跳转至下单页前将航班信息存在了cookie,用于在下单页展示所选航班信息。遇到的问题是购买单程机票的时候,一切流程正常(从航班查询页,选择需要的购买的航班,进入到下单页,进行下单操作);但是购买往返机票的时候,进入到下单页时,发现下单页所有接口都报了400的错误,继而再访问该网站的其他页面也都报了400的错误。

一般来说400报错是因为前后端参数格式或者请求头不一致导致的问题,前端用get方式请求,而后端的接参方式为@requestBody。

这里同一个接口,同一段代码,自然是不可能出现请求头不一致导致的400,至于参数,下单页的参数单程和往返一模一样(都是操作id)。

至此怀疑是后端的问题,遂联系后端一起定位问题,后端一顿操作之后,怀疑可能是Nginx出现问题,遂联系运维一起定位问题。

三方一顿操作,一顿查阅资料后发现,还是参数倒是问题,但不是下单页的接口参数导致的,而是航班搜索页存入的cookie导致的问题。 因为往返的时候,存入cookie的数据量过大,请求接口的时候浏览器截取了cookie的值,导致传到后端的参数内容不完整,后端解析出现400错误

至此找出原因,就好解决了,前端换一下存储方式,换成session或者storage就好。

后查阅资料发现web服务器对请求头长度做了限制,避免畸形封装包消耗服务器的资源。

不止页面会在请求头(Request Headers)传递cookie,连css、图片这些静态资源也会传递。可想而知,cookie过大也是非常浪费性能的,也会浪费我们的网站大量的流量。所以作为一个开发者,我们要慎用cookie,不能因为cookie是存在客户端这种片面的思想就乱用了。用一个东西之前要非常清楚它的原理,这样才能学好编程。

cookie是塞在请求头里面的,如php语言来,当请求一个页面的时候,cookie会通过http协议传到服务端,这也是通过$_COOKIE就能获取到远程客户端中的cookie的原理。所以Cookie太大后,整个HTTP头也会被撑大

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132501.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档