背景是这样的,做的是一个机票的购票业务,包括了购票(单程购票和往返购票)等功能。购票的航班信息需要从航班搜索页带到下单页,所以在跳转至下单页前将航班信息存在了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头也会被撑大

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

  1. 【疑难解决】RTSP协议视频流媒体平台EasyNVR调用云台控制接口返回400报错的问题处理

    网络摄像头RTSP协议视频直播平台是TSINGSEE青犀视频全线产品中最先支持ONVIF协议的平台,可以通过ONVIF进行云台控制. 在用户使用EasyNVR调用云台控制的接口时,发现会返回400的报 ...

  2. Tomcat 400报错显示tomcat信息的解决

    Tomcat 400报错显示tomcat信息,这就存在着很大的安全隐患. 根据官网给出的方案需要重写ErrorReportValve处理400错误跳转到自定义页面,首先需要更改tomcat中的serv ...

  3. Angular4 http服务400报错

    400报错并不陌生,也就是前后台参数不匹配的原因,知道问题是什么接下来就开始找错误 后台代码接收参数使用的是@RequestParam String username` @RequestParam接受 ...

  4. Jquery 400报错

    问题:前端能够完整传递数据,后台不能相应的接收到所有的数据 解决思路: 1,前端传送的数据格式和后端接收的数据格式不一一对应,400报错 2,修改前端界面的name属性,name的属性与后台的接收字段 ...

  5. 前台拼接中文参数乱码提交400报错后台无响应

    问题描述:JSP中使用ajax get方式提交表单数据请求,使用英文参数浏览器正常拼接和调用后台接口,输入中文参数拼接乱码,显示400报错,后台打断点无响应. 解决思路:网友提示说将参数使用encod ...

  6. es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错

    现象:往es7集群中推数时,发生如下情况 接口出现很多400 发现集群中某台机器cpu被怼爆 发生fullGC 产生400报错的原因是es7做了熔断优化,当jvm内存使用超过阈值,为了避免丑陋的oom ...

  7. 解决idea导入项目后依赖报错问题

    解决idea导入项目后依赖报错问题 参考文章: (1)解决idea导入项目后依赖报错问题 (2)https://www.cnblogs.com/dayandday/p/10607195.html (3 ...

  8. 解决Sublime包管理package control 报错 There are no packages available for installation

    解决Sublime包管理package control 报错 There are no packages available for installation 真的是哔了狗了,要不是我机智的重新安装了 ...

  9. python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题

    python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错"ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连 ...

最新文章

  1. 使用汇编语言编写第一个程序
  2. MySQL中查询的看到的日期和Java程序查询出来的日期差了几个小时
  3. 手机画面尺寸多少满屏_手机屏幕科普
  4. Clojure入门指南(Getting Started)
  5. oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解
  6. 怎样学好C++ ----高手的话
  7. 老板眼中理想的“数据中台”,是不是真的存在?
  8. python中or关键字在变量赋值时的用法
  9. CodeSmith 注册
  10. 获取当前时间getDate()注意点
  11. 注释(/**/) 给CSS带来的麻烦
  12. pureftp在企业中的应用及配置
  13. 掌门教育微服务体系 Solar
  14. 'gbk' codec can't encode character解决方法
  15. centos部署k8s集群(kubeadm方式)
  16. LIF-Seg 激光雷达与相机图像融合的三维激光雷达语义分割
  17. 企业微信和个人微信的区别是什么?
  18. win10无法装载iso文件_win10专业版系统无法加载iso文件怎么办
  19. Bumped! (最短路)
  20. 世界 6 大航空动力巨头企业

热门文章

  1. 详尽基础:基于PyTorch的超分重建
  2. 围观:滴滴是如何派单的
  3. go 汇编入门 如何学习Golang?万字详文教你Go语言入门
  4. 垂直行业网站发展前景
  5. 一文读懂自动驾驶运行设计域ODD
  6. 【转】The XOR Texture 异或纹理(Lode's Computer Graphics Tutorial)
  7. 大厂竞业协议是“巨坑”?科大讯飞前员工、团队创始人跳槽腾讯被判赔 1200 万...
  8. Notepad工具软件配置Mycat schme.xml文件
  9. 在进行mvn打包的时候出现:Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.1.RELEAS
  10. 初中计算机科普书籍,初中生16篇科学阅读书目推荐清单