http状态码(一)400报错

news2024/11/28 11:56:21

一  400报错汇总

①  综述

一、4xx状态码报错

 说明: '客户端'行为导致的'报错'

二、通用的'4xx'HTTP报错

  1) 400

  2) 401

  3) 403

  4) 404

  5) 405  --> 不允许方法,可能'跨域'或者'nginx限制'请求方法

  6) 408

  7) 413

  8) 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_host

  2) 传递过去的是'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.coloradmin.cn/o/1318595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA-Day65】Java内部类深度解析

Java内部类深度解析 《Java内部类深度解析》摘要引言一、理解内部类1. 内部类的基本概念和语法1.1 什么是内部类&#xff1f;1.2 内部类的语法结构1.3 内部类的基本概念 2. 不同类型的内部类详解2.1 成员内部类2.2 静态内部类2.3 局部内部类2.4 匿名内部类 二、内部类与普通类的…

K - 近邻算法

1、算法介绍 KNN&#xff08;K Near Neighbor&#xff09;&#xff1a;k个最近的邻居&#xff0c;即每个样本都可以用它最接近的k个邻居来代表。KNN算法属于监督学习方式的分类算法&#xff0c;我的理解就是计算某给点到每个点的距离作为相似度的反馈。 简单来讲&#xff0c;KN…

算法-----全排列

目录 前言 代码 思路 我的其他博客 前言 全排列是一种组合数学的概念&#xff0c;它表示将一组元素按照一定顺序进行排列的所有可能情况。在计算机编程中&#xff0c;通常使用递归来实现全排列。以下是使用Java语言实现全排列的详细解释&#xff1a; 代码 public class Pe…

YOLOv8改进:ASF-YOLO助力小目标,提取多尺度特征| 2023年12月最新成果

🚀🚀🚀本文改进: ASF-YOLO一种新的特征融合网络架构,该网络由两个主要的组件网络组成,可以为小目标分割提供互补的信息:(1)SSFF模块,它结合了来自多尺度图像的全局或高级语义信息;(2)TFE模块,它可以捕获小目标的局部精细细节等 🚀🚀🚀YOLOv8改进专栏:http://…

邮件服务下载安装详细步骤、汉化、配置

Foxmail for Mac 下载地址&#xff1a;Download - hMailServer - Free open source email server for Microsoft Windows 教程地址 hMailServer安装使用教程 - 诸子流 - 博客园 (cnblogs.com) 设置密码为:dzqdb123 设置好端口 添加账号密码 (9条消息) hMailServer 配置DKIM…

软件测试找了两个月了,简历投了10万多次,找不到工作怎么办?

是行情不好吗&#xff1f;我觉得不是&#xff0c;为什么别人可以找到&#xff0c;而你找了两个月还找不到。 只能说明一个原因&#xff0c;你学的东西和企业需要有些差距。 现在&#xff0c;软件测试已经不是过去那样只会点点点就可以找到一个合适的工作。 首先因为大环境原…

人工智能导论复习资料

题型 1、简答题&#xff08;5题&#xff09; 2、设计题 3、综合题 4、论述题&#xff08;10分&#xff09; 考点 第一章 1、人工智能的定义、发展&#xff1b; 2、人工智能的学派、认知观及其间的关系&#xff1b; 3、人工智能要素及系统分类&#xff1b; 4、人工智能的研究、…

基于springboot实现的健身房管理系统

一、系统架构 前端&#xff1a;html | js | css | jquery | bootstrap 后端&#xff1a;springboot | springdata-jdbc 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理员-首页 03. 管理员-会员卡查询 04. 管理员-会员管理…

下午好~ 我的论文【遥感】(第一期)

写在前面&#xff1a;下午浑浑噩噩&#xff0c;泡杯茶&#xff0c;读篇论文吧 首先说明&#xff0c;时间有限没有那么精力一一回复了&#xff0c;对不起各位了TAT 文章目录 遥感Bi-Dilation-formerCNN-GNN-FusionMulti-hierarchical cross transformerCoupled CNNs 遥感 Bi-D…

Linux驱动开发学习笔记4《设备树下的LED驱动实验》

目录 一、设备树LED驱动原理 二、硬件原理图分析 三、实验程序编写 1.修改设备树文件 2.LED 灯驱动程序编写 3.编写测试APP 四、运行测试 1. 编译驱动程序和测试APP &#xff08;1&#xff09; 编译驱动程序 &#xff08;2&#xff09; 编译测试APP ​ 2.运行测试 一、…

离线无网络环境下配置Python/Anaconda环境踩过的坑

一、前言 如果你同样需要在无网络环境下安装Python环境&#xff0c;这篇博客是一个很好的参考&#xff0c;由于内网没有网络&#xff0c;因此不能使用conda install/pip install等在线下载安装方式&#xff0c;经过个人尝试&#xff0c;推荐以下两种方法。 二、离线安装python…

YOLOv3-YOLOv8的一些总结

0 写在前面 这个文档主要总结YOLO系列的创新点&#xff0c;以YOLOv3为baseline。参考(抄)了不少博客&#xff0c;就自己看看吧。有些模型的trick不感兴趣就没写进来&#xff0c;核心的都写了。 YOLO系列的网络都由四个部分组成&#xff1a;Input、Backbone、Neck、Prediction…

拖拽属性 draggable

H5 新增的属性 draggable&#xff0c;它能够给与一切的 html 元素拖动的效果。 拖拽元素 属性为 draggable"true" 的元素&#xff0c;可拖动&#xff0c;且拖动时鼠标变为禁用图标 ps: 直接写 draggable 可能无效 ondragstart 开始拖拽时触发&#xff08;按下鼠标…

单机架构到分布式架构的演变

目录 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 总结 1.单机架构 初期&#xff0c;我们需要利用我们精干的技术团队&#xff0c;快…

【算法Hot100系列】盛最多水的容器

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【LeetCode】数组精选17题——双指针、滑动窗口、前缀和

目录 快慢指针&#xff1a; 1. 移动零&#xff08;简单&#xff09; 2. 复写零&#xff08;简单&#xff09; 对撞指针&#xff1a; 1. 两数之和 II - 输入有序数组&#xff08;中等&#xff09; 2. 三数之和&#xff08;中等&#xff09; 3. 有效三角形的个数&#xff…

【员工工资册】————大一期末答辩近满分作业分享

前言 大家好吖&#xff0c;欢迎来到 YY 滴项目系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C语言的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; PS&#xff1a;以下内容是部分展示&am…

全球汽车行业的数字化转型:产品和后端的渐进之旅

如何管理汽车行业的数字化转型?在我们本篇文章中了解更多有关如何设定长期目标的信息。 正在改变汽车行业的26个数字化主题 最近一篇关于汽车行业数字化转型的论文确定了26个数字技术主题&#xff08;论文详情请点击阅读原文&#xff09;&#xff0c;分为三个主要集群: 1)驾驶…

RabbitMQ手动应答与持久化

1.SleepUtil线程睡眠工具类 package com.hong.utils;/*** Description: 线程睡眠工具类* Author: hong* Date: 2023-12-16 23:10* Version: 1.0**/ public class SleepUtil {public static void sleep(int second) {try {Thread.sleep(1000*second);} catch (InterruptedExcep…

深入理解Java关键字volatile

前置知识-了解以下CPU结构 如下图所示&#xff0c;每个CPU都会有自己的一二级缓存&#xff0c;其中一级缓存分为数据缓存和指令缓存&#xff0c;这些缓存的数据都是从内存中读取的&#xff0c;而且每次都会加载一个cache line&#xff0c;关于cache line的大小可以使用命令cat…