客户端错误:4XX

  • 1. 请求"过大"的错误
    • 1.1 414 - URI Too Long
    • 1.2 431 - Request Header Fields Too Large
    • 1.3 413 - PayLoad Too large

1. 请求"过大"的错误

http里请求过大的错误码可以分为三种:

  1. 请求的url太长,超过了服务器设置的最大长度
  2. 请求的头部过大, 头部数量过多或单个头部的大小过大
  3. 请求体的数据过大

1.1 414 - URI Too Long

响应码414 URI Too Long表示客户端所请求的URI超过了服务器允许的范围

以下是造成这种错误的几种常见的原因

  • 当客户端误将POST请求当做GET请求时, 会带上一个较长的查询字符串
  • 当客户端坠入重定向黑洞,比如,指向自身后缀的重定向URL前缀
  • 当客户端对服务器进行攻击,试图寻找潜在的漏洞时

通常情况下,服务器从socket中读取HTTP报文时,第一件事就是判断请求行长度是否超过自身所允许的范围,这里的请求行=请求方法+请求uri+http版本,以django自带简单服务器为例, 源码位于:django.core.server. basehttp.WSGIRequestHandler里,

    def handle(self):"""Copy of WSGIRequestHandler.handle() but with different ServerHandler"""self.raw_requestline = self.rfile.readline(65537)if len(self.raw_requestline) > 65536:self.requestline = ''self.request_version = ''self.command = ''self.send_error(414)returnif not self.parse_request():  # An error code has been sent, just exitreturnhandler = ServerHandler(self.rfile, self.wfile, self.get_stderr(), self.get_environ())handler.request_handler = self      # backpointer for logginghandler.run(self.server.get_app())

很明显,hander方法的第一行就是用65537的长度去读取请求行,如果请求行的长度大于65537,就报414错误,我修改源码,将这个长度设置为10,然后用postman请求我写的一个demo应用中的接口,看看是不是报414

1.2 431 - Request Header Fields Too Large

1.3 413 - PayLoad Too large

HTTP客户端错误状态码--4XX相关推荐

  1. http协议常见错误状态码(400,404,500等).

    HTTP 是 一 个 在 计 算 机 世 界 里 专 门 在 两 点 之 间 传 输文 字 . 图 片 . 音 频 . 视 频 等 超 文 本 数 据 的 约 定 和 规 范 RFC 规 定 HTTP ...

  2. HTTP常见的错误状态码

    HTTP常见的错误状态码 200:正确的请求返回正确的结果,如果不想细分正确的请求结果都可以直接返回200. 201:表示资源被正确的创建.比如说,我们 POST 用户名.密码正确创建了一个用户就可以 ...

  3. HTTP请求错误状态码大全status code: 404

    这个是更加全面的HTTP请求错误状态码大全链接地址:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,下面只是常出现的部分. 1xx(临时响 ...

  4. boost::asio异步模式的C/S客户端源码实现

    异步模式的服务器源码 //g++ -g async_tcp_server.cpp -o async_tcp_server -lboost_system //#include <iostream& ...

  5. zookeeper 客户端_zookeeper进阶-客户端源码详解

    流程图 先看一下客户端源码的流程图 总体流程 总体流程 开启SendThread线程 开启EventThread 总结 下面根据源码讲解,大家整合源码和流程图一起看最好,本篇内容比较多建议收藏起来看. ...

  6. 运维-nginx +php 错误状态码说明

    常用 nginx 错误码: 正常: 200 正常访问 301  永久跳转访问 302 临时跳转访问 常见错误状态码: 400  ,经常有服务器自己调用 自己的情况 用报400,如高防调用高防,或者lv ...

  7. grpc-go客户端源码分析

    grpc-go客户端源码分析 代码讲解基于v1.37.0版本. 和grpc-go服务端源码分析一样,我们先看一段示例代码, const (address = "localhost:50051 ...

  8. OAuth2.0授权协议与客户端授权码模式详解

    本文来重点讲解下OAuth2.0授权协议与客户端授权码模式 文章目录 什么是OAuth协议 交互过程 客户端授权模式 授权码模式 简化模式 密码模式 客户端模式 接入公司内部系统 后台管理系统 前台业 ...

  9. HTTP常见的错误状态码(404、401、500、503等)

    一些常见的错误状态码 一些常见的状态码为: 一些常见的状态码为: 200 - 服务器成功返回网页 400异常 (错误请求) 服务器不理解请求的语法. 401(未授权).请求要求身份验证. 对于需要登录 ...

最新文章

  1. ts连接mysql数据库_各种数据库的连接方法
  2. 密码篇——对称加密—3DES
  3. 初探GNN-文本表示学习
  4. RxSwift之UI控件UISlider与UIStepper扩展的使用
  5. 关于C++中的 多态 问题
  6. mysql in select 子句_在MySQL select语句IN子句中按值顺序排序?
  7. java实现将汉字转为拼音并包含音调
  8. 产品经理们终极面试宝典
  9. 如何计算页面的浏览率
  10. PAT甲级-1118 Birds in Forest (25 分)
  11. PyTorch-LSTM时间序列预测中如何预测真正的未来值
  12. c++ Lake Counting
  13. 虹科-将人工智能引入电子组装检测
  14. rhel7 http实例
  15. 第十一届吴文俊人工智能科学技术奖颁奖盛典召开,66个项目成果摘得中国智能科学技术奖励最高殊荣
  16. [讲座论坛] 应对气候变化的中国视角
  17. 《声呐图像处理》---霍冠英
  18. mysql 中文模糊查询_解决mysql中文模糊查询问题的方法
  19. 同花顺Python量化交易接口有什么功能?
  20. 基于BP神经网络预测日本麻将立直听牌

热门文章

  1. C++ NAN 异常处理
  2. Android热更新研究与实现
  3. iconfont 图标转为字体_iconfont 转换为图标字体
  4. AI带来的不应该只有焦虑!加油,我们
  5. C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间的特性...
  6. 使用MapStruct的@Mapper(componentModel = “spring“, unmappedTargetPolicy = ReportingPolicy.IGNORE)注解 不能重载
  7. 阿尔·里斯-市场营销的22条法则(22条商规)-22
  8. DTSD79-W1型三相四线电子式多功能电能表驱动通讯
  9. MFA强制对齐音频和音素的用法
  10. 基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资料)