当前位置: 首页 > news >正文

http状态码(一)400报错

一  400报错汇总

①  综述

一、4xx状态码报错说明: '客户端'行为导致的'报错'二、通用的'4xx'HTTP报错1) 4002) 4013) 4034) 4045) 405  --> 不允许方法,可能'跨域'或者'nginx限制'请求方法6) 4087) 4138) 419三、ngin自身定义的'4xx'报错495、496、497、498、'499'在src/http/ngx_http_special_response.c文件中有'状态码'的解释

②   HTTP 400的语义

关注: 'http的语义',以及 'ninx 对 http的实现' 的实践程度

说明: 虽然我们无法'去穷举'所有可能出现的'不合规'类型,但是一些常见的类型必须'熟知'

③  思考

思考1: debug 能观察 'http 400' 报错的原因吗?思考2: HTTP 400 报错,是'nginx'代理返回的? 还是'后端服务器'返回的?备注: 通过'$upstream_status'和'$upstream_addr'综合判断说明: 如果nginx 直接返回'400'报错,就不会转发到'上游'服务器原因: nginx认为客户端'请求语法'错误,导致'无法理解'请求信息,进而服务器'无法处理'请求

④  nginx常见400报错

明确: 400 究竟是'谁返回'的? 'nginx代理'还是'后端'  --> 看'$upstream_status'是否有值

1、Request Heder '请求头' 过大场景1: 某个'域名'下可能积累大量的cookie,导致'Cookie'请求头过大场景2: 请求头携带'特殊字符'导致报错场景3: 后端响应头返回'异常'信息阶段:解析请求头的时候-->'两个反向'(client->nginx;upstream-->nginx)

 Cookie过大导致request 400

2、证书'校验'失败场景:一般是nginx配置双向认证,nginx校验客户端证书,客户端'没提供'证书或者'客户端证书'过期细节点:'error.log debug' 中报了SSL握手失败报错1: No required SSL certificate was sent报错2: client SSL certificate verify error: \(21:unable to verify the first certificate) \while reading client request header

 upstream 模块细节     nginx upstream 中带下划线bug 前端会报400错误   sping导致400

3、Invalid hostname '无效的主机头'场景1:1) 由于nginx在转发的时候使用了'默认'的 proxy_set Host $proxy_host2) 传递过去的是'upstream_id',导致tomcat'无法解析'主机头 场景2:HTTP1.1,但是Host头为'空'模拟: curl -I -H 'Host:' nginx.wzj.com

4、HTTP协议客户端报错: '400 Bad Request: The plain HTTP request was sent to HTTPS port'error.log报错: client sent plain HTTP request to HTTPS port \while reading client request header需求: 配置文件将让Nginx侦听'80和443'端口,并将所有的'HTTP请求'重定向到HTTPS尝试: http://www.wzj.com  --> '报错'listen 80;
listen 443;
ssl on;++++++++++ "分割线" ++++++++++listen 80;
listen 443 ssl;原因分析:1)因为HTTP请求被发送到'HTTPS端口'2) 这种报错多出现在Nginx'既处理HTTP请求'又'处理HTTPS请求'的+是'多次重定向导致'的情况遗留: proxy_set_header X-Forwarded-Proto https;

协议问题      Nginx "The plain HTTP request was sent to HTTPS port"    案例分析

URI过长或request header过大导致400或414报错

5、 其它'HTTP'请求'不规范'的场景场景1: query的参数'有空格',未经过'unlencode'编码curl -v 'http://127.0.0.1/log?name=wzj&channel=Google Play' -d @test.json场景2: HTTP头'不规范'Authorization: <auth-scheme> <authorization-parameters>  场景3: content_length和body长度'不一致'

+++++++++++++++++++  '原因'分析  +++++++++++++++++++

Authorization不规范导致400

⑤  nginx是如何解析http

HTTP的请求消息格式

HTTP 规定,'头部'和'载荷'的分界线是'两次 CRLF'

⑥  遗留

nginx http 499 其实没有很可怕 

nginx 自身 495 496 497 状态码                    参考出处

nginx踩坑系列之从http跳转到https

nginx的499状态码是怎么回事?

http://www.lryc.cn/news/262701.html

相关文章:

  • 【深度学习目标检测】五、基于深度学习的安全帽识别(python,目标检测)
  • 芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集训练出来的模型
  • c语言实验八
  • ArcGIS Pro SDK文件选择对话框
  • ACT、NAT、NATPT和EASY-IP
  • HTML实现每天单词积累
  • 【ECMAScript笔记二】运算符分类,流程控制(顺序结构、分支结构、循环结构)
  • ShenYu网关注册中心之Zookeeper注册原理
  • 高级C#技术(二)
  • 【性能测试】基础知识篇-压力模型
  • springboot-redis设置定时触发任务详解
  • Video anomaly detection with spatio-temporal dissociation 论文阅读
  • svn 安装
  • slurm 23.11.0集群 debian 11.5 安装
  • ffmpeg可以做什么
  • 一种缩小数据之间差距的算法
  • 【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例
  • 在接口实现类中,加不加@Override的区别
  • 优质全套SpringMVC教程
  • 微信小程序---使用npm包安装Vant组件库
  • GPT-4V被超越?SEED-Bench多模态大模型测评基准更新
  • 数据库_mongoDB
  • Layui实现自定义的table列悬停事件并气泡提示信息
  • Tomcat从认识安装到详细使用
  • 07-Eventing及实践
  • Linux下Netty实现高性能UDP服务
  • Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装
  • FFmpeg转码流程和常见概念
  • 【01】GeoScene生产海图或者电子航道图
  • TWS蓝牙耳机的船运模式