首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    Java HttpURLConnection setRequestProperty(“content-length“, “0“)不起作用

    网上的教程说用 setRequestProperty(“content-length”, “0”)设置一下,结果我测试还是返回411. 调试发现:为了安全,这些头默认是不允许指自定义的。

    1.5K10编辑于 2022-10-02
  • 来自专栏InvQ的专栏

    RestEasy 默认 http 返回头部没有Content-Length

    长连接有沾包的问题,要用Content-length切割body 从 http 1.1 开始,长连接大行其道,而头部的 Content - length 也被较少的用到。 basic ? ? ? 所以想自行将pojo通过 Jackson序列化后,然后计算其长度,再将长度作为Content-length放到返回的头部信息中去。 需要自己实现。

    1.3K20发布于 2020-09-27
  • 来自专栏一枝花算不算浪漫的专栏

    【原创】经验分享:一个Content-Length引发的血案(almost....)

    问题的根本原因是我们在GET请求的Header中传递了Content-Length参数,而且服务B近期添加了一个jar包,jar中有一个拦截器做了一些事情导致了这个问题。 请求,公司底层包中有个Feign拦截器会将前端请求Header属性赋值给feign请求中的Header,导致我们发送的GET请求Header中也含有Content-Length属性。 最终我们先采用方案3,在我们请求链路中去做一些判断,去除GET请求中Content-Length的传递。 但是如果服务请求方配置了传递的Content-Length为空呢? / 一个简单的Content-Length确实难住了我,请求的不规范才是这次问题的真正原因。

    1.2K20发布于 2020-09-09
  • 来自专栏Elton的技术分享博客

    Nginx 在POST提交数据时,报 HTTP411 Content-Length required 错误

    在使用Nginx 1.3.9以下版本,都存在当用户POST一个带有文件的请求的时候,出现HTTP 411错误。

    1.6K20发布于 2021-01-26
  • 来自专栏代码如诗

    用了这么久HTTP, 你是否了解Content-Length和Transfer-Encoding ?

    什么是Content-Length Content-Length是HTTP消息长度, 用十进制数字表示的八位字节的数目, 是Headers中常见的一个字段. Content-Length应该是精确的, 否则就会导致异常 (特别地, HTTP1.0中这个字段可有可无). Content-Length首部指示出报文中实体主体的字节大小. Content-Length是如何工作的 Content-Length使用十进制的数字表示了消息的长度, 服务端/客户端通过它来得知后续要读取消息的长度. 同样地, 在响应消息中Content-Length超过实际长度也是一样的效果: Content-Length < 实际长度 如果这个长度小于实际长度, 首次请求的消息会被截取, 比如参数为param= 不确定Content-Length的值怎么办 Content-Length首部指示出报文中实体主体的字节大小.

    1.5K10发布于 2019-12-20
  • 来自专栏行者常至

    JSON parse error: Unexpected end-of-input: ... PushbackInputStream ... JsonEOFException

    2.如果json格式是正确的,再次查看请求头中是否包含Content-Length,如果包含的话,可能就是这个值有问题,把这个Content-Length从请求头中删除掉。 我这里是第二个,因为请求头是抓包中拷贝的,但是我在postman中调试的时候,改变了body中的值,导致Content-Length变化了,但是请求头中的Content-Length并没有变化,故而报此错误 如果body中的长度大于Content-Length将会截取body导致json格式异常;如果body中的长度小于Content-Length将会导致请求超时。

    4.8K30发布于 2019-09-18
  • 来自专栏移动开发面面观

    okhttp——BridgeInterceptor

    requestBuilder.header("Transfer-Encoding", "chunked") requestBuilder.removeHeader("Content-Length 如果内容长度为-1,则是chunked模式,去掉"Content-Length"。 = HTTP_NOT_MODIFIED) { return true; } // If the Content-Length or Transfer-Encoding headers 当HTTP使用gzip方式时,Content-Length的返回是根据gzip压缩后的长度进行返回的。此时Content-Length的值与用户所期望的不符的。因为用户并没有主动使用gzip模式。 所以,此时okhttp选择将Content-Length remove掉,以免让调用者产生误解。 不得不说okhttp在此处的处理略显粗暴,但也不是完全不能理解。 Issue中也有相关的讨论 ?

    1.6K30发布于 2019-05-15
  • 来自专栏网络安全攻防

    请求走私利用实践(上)

    和Transfer-Encoding (1) Content-Length:HTTP协议中的一个头部字段,用于指示请求或响应消息体的长度(以字节为单位),它主要用于告诉接收方需要接收的数据的准确大小以便正确解析和处理消息 和Transfer-Encoding头都存在时应该采用忽略Content-Length来防止此问题,但是当只有一个服务器在运行时,这可以避免歧义,但当两个或多个服务器链接在一起时就无法避免歧义了,在这种情况下 头,后端服务器使用Transfer-Encoding头 TE.CL:前端服务器使用Transfer-Encoding标头,后端服务器使用Content-Length标头 TE.TE:前端和后端服务器都支持 1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Content-Length 头,我们可以执行简单的HTTP请求走私攻击,如下所示: POST / HTTP/1.1 Host: vulnerable-website.com Content-Length: 3 Transfer-Encoding

    81810编辑于 2024-01-26
  • 来自专栏林德熙的博客

    dotnet 默认创建的 JsonContent 没有 Content Length 的内容头

    本文记录一个 dotnet 的设计问题,默认创建出来的 JsonContent 对象的 Headers 里,是没有 Content-Length 信息的 如下面代码创建一个 JsonContent 对象 信息 在现代的绝大部分服务端,都是支持 Content 不带 Content-Length 信息的,这在大部分后台上都能正常符合预期工作 即使用大概如下代码的 JsonContent 发送出去的请求, 在请求里面也是不带 Content-Length 信息的 var foo = new Foo(); var jsonContent = JsonContent.Create(foo); 信息,且使用如下代码发送请求也是带上 Content-Length 信息的 await jsonContent.LoadIntoBufferAsync(); var httpClient · Issue #70793 · dotnet/runtime Content-Length not appended when using JsonContent · Issue #82984 ·

    34010编辑于 2024-08-25
  • 来自专栏工程师的分享

    【Golang那些事】为什么请求处理完了,服务端没有返回呢!

    经对比,发现Context-Length与请求真实长度不一致,由于这个请求是从另一个请求借鉴而来,所以Header里面复用了之前的Content-Length而如果Content-Length的长度大于 我们问下AI简单来说,导致服务端认为还有数据没有上报过来,所以一直在等待接收,从而导致超时这里在请求的时候先去掉Content-Length,使用一些成熟的请求工具(比如jmeter)会自动计算并进行添加 transfer.go文件里面的568行,这里是把读取body的值做一个限制,即用Content-Length进行限制这里是关键因为这里基本上确定了要读取的长度,而body比Content-Length 这里Gin只是推波助澜了一下,本质上还是读取的body没有到达Content-Length,导致网络IO一直在等待3.必竟有的时候,基于安全等考虑,我们是要对发送过来的请求做一些二次封装,如果要修改的话 如果要做二次封装,在Gin框架这里可以在业务代码进行修改body和对应的Content-Length,再进行一次重定向发送即可收工另附一个小知识,也不是所有的请求都需要加Content-Length

    57420编辑于 2025-01-19
  • 来自专栏7DGroup

    走进Java接口测试之简单快速的Mock Server Moco

    : 0 09 十二月 2018 11:06:50 [nioEventLoopGroup-3-2] INFO Response return: HTTP/1.1 200 Content-Length : 0 09 十二月 2018 11:21:04 [nioEventLoopGroup-3-2] INFO Response return: HTTP/1.1 200 Content-Length : 0 09 十二月 2018 11:26:42 [nioEventLoopGroup-3-2] INFO Response return: HTTP/1.1 200 Content-Length : 0 09 十二月 2018 13:12:43 [nioEventLoopGroup-3-2] INFO Response return: HTTP/1.1 200 Content-Length : 0 09 十二月 2018 13:16:48 [nioEventLoopGroup-3-2] INFO Response return: HTTP/1.1 200 Content-Length

    3.7K20发布于 2019-07-17
  • 来自专栏网络安全

    HTTP请求走私:隐藏在协议边界中的隐形攻击

    利用方法:攻击者发送一个同时包含Content-Length和Transfer-Encoding:chunked的请求。Content-Length的值被设置得足够大,以包含整个“走私的”请求。 前端服务器根据Content-Length读取所有数据并转发。 后端服务器优先(或仅)使用Content-Length头部。利用方法:攻击者发送一个同时包含Content-Length和Transfer-Encoding:chunked的请求。 后端服务器忽略Transfer-Encoding,根据Content-Length读取请求体。 Content-Length)或拒绝该请求。

    38930编辑于 2025-12-04
  • 来自专栏Node Python Go全栈开发

    Web Security 之 HTTP request smuggling

    Content-Length 头很简单,直接以字节为单位指定消息体的长度。 HTTP 规范为了避免这种歧义,其声明如果 Content-Length 和 Transfer-Encoding 同时存在,则 Content-Length 应该被忽略。 TE.CL:前端服务器(转发服务)使用 Transfer-Encoding 头,而后端服务器使用 Content-Length 头。 CL.TE 漏洞 前端服务器(转发服务)使用 Content-Length 头,而后端服务器使用 Transfer-Encoding 头。 而后端服务使用 Content-Length 则会一直等到后续 6 个字节的内容。这就会导致明显的延迟。

    1.7K10发布于 2021-03-19
  • 来自专栏言云纪

    python进度条与下载器的实现

    res = requests.get(url,headers=header,stream=True) print("视频总大小:%s kb"%str(int(res.headers.get("Content-Length "))/50))+" "*(50-(int(write_size/(int(res.headers.get("Content-Length"))/50)))) + "已下载 "+str(int(write_size /(int(res.headers.get("Content-Length"))/50))*2)+"%",end="\r") print("█" * int(write_size/(int(res.headers.get ("Content-Length"))/50))+" "*(50-(int(write_size/(int(res.headers.get("Content-Length"))/50)))) +str( int(write_size/(int(res.headers.get("Content-Length"))/50))*2)+"% 下载完成!")

    92120编辑于 2022-12-27
  • 来自专栏ffffffff0x

    [ffffffff0x] 浅析 HTTP Smuggling 攻击

    Content-Length : WEB 服务器告诉浏览器自己响应的对象的长度。 \r\n \r\n 前端服务器收到该请求,通过读取Content-Length,判断这是一个完整的请求,然后转发给后端服务器,而后端服务器收到后,因为它不对Content-Length进行处理,由于Pipeline 的值对请求进行处理,而后端源站服务器按照第二个Content-Length的值进行处理,这样便有可能引发请求走私。 此时恶意攻击者可以构造一个特殊的请求 POST / HTTP/1.1\r\n Host: example.com\r\n Content-Length: 8\r\n Content-Length: 7\ CL-TE 所谓CL-TE,就是当收到存在两个请求头的请求包时,前端代理服务器只处理Content-Length这一请求头,而后端服务器会遵守RFC2616的规定,忽略掉Content-Length,处理

    1.3K11发布于 2020-12-27
  • 来自专栏AI SPPECH

    020_Web安全攻防实战:HTTP请求走私原理、高级攻击技术与全面防御策略深度指南

    Content-Length机制: 通过数值直接指定消息体的字节数 格式:Content-Length: <number> 优点:简单直接 缺点:不支持动态生成的内容 Transfer-Encoding 头部) 虽然HTTP规范不允许重复的Content-Length头部,但某些服务器的实现可能接受并以不同方式处理它们。 2.4.1 攻击原理 前端服务器使用第一个Content-Length值 后端服务器使用第二个Content-Length值 差异导致请求边界解析错误 2.4.2 攻击示例 POST / HTTP/1.1 Host: example.com Content-Length: 10 Content-Length: 20 01234567890123456789 解析过程: 前端服务器:使用第一个Content-Length 4.1.1 基本检测流程 识别潜在的解析差异 发送包含两种Content-Length的请求 发送包含Content-Length和Transfer-Encoding的请求 观察响应行为的变化

    55610编辑于 2025-11-17
  • 来自专栏用户5909132的专栏

    国产最强权限管理,没有之一,不接受任何反驳!

    String cos:content-length 检查请求头部:Content-Length,该请求头部为RFC 2616中定义的 HTTP 请求内容长度(字节)。 /test2.jpeg 限制上传文件的大小(cos:content-length) 请求头部Content-Length RFC 2616中定义的 HTTP 请求内容长度(字节),在 PUT 和 POST 条件键 cos:content-length 上传对象时,可以通过条件键cos:content-length限制请求头部Content-Length,进而限制上传对象的文件大小,以方便您更加灵活管理存储空间 )上传请求的Content-Length头的大小。 示例3: 限制请求头部 Content-Length的最大值 限制 PutObject 和 PostObject 上传请求必须携带 Content-Length 头部,且这个头部的值不得大于100。

    1.1K30编辑于 2022-03-24
  • 来自专栏网络安全攻防

    请求走私利用实践(下)

    username=carlos HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length exploiting/lab-bypass-front-end-controls-te-cl 绕过演示: 首先访问上述靶机,访问/admin路径时会被直接拦截 随后构造以下请求走私载荷并发送两次请求 Content-length username=carlos HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length username=carlos HTTP/1.1 X-abcdef-Ip: 127.0.0.1 Content-Type: application/x-www-form-urlencoded Content-Length 由于受害者请求的开始包含在comment参数中,这将作为评论发布在博客上,随后便能够通过访问相关的帖子来阅读它,为了捕获更多的受害者请求,您只需要相应地增加被走私请求的Content-Length头的值

    49410编辑于 2024-01-26
  • 来自专栏quan9i的安全笔记

    初探HTTP请求走私

    前置知识 Content-Length Content-Length指的是HTTP消息长度, 它使用十进制的数字表示了消息的长度, 服务器通过它来得知后续要读取消息的长度。 Content-Length首部指出报文中实体主体的字节大小. 这个大小是包含了所有内容编码的,比如,对文本文件进行了gzip压缩,那它的大小就是压缩后的大小而非之前的。 CL-CL 按照RFC7230中的规定,当服务器遇见一个请求中包含两个Content-Length时,应该返回400错误,但一些服务器可能不会严格执行该规范,此时就可能出现请求走私。 假设现有场景如下 前端代理服务器和后端服务器在收到一个包含两个Content-Length的请求时,皆不返回400,且此时前端代理服务器采用的是第一个Content-Length,后端服务器采用的是第二个 Content-Length 此时我们构造请求如下 POST / HTTP/1.1\r\n Host: example.com\r\n Content-Length: 8\r\n Content-Length

    2.5K60编辑于 2023-05-18
  • 来自专栏网络安全攻防

    请求走私利用扩展

    ,另一台服务器将消息视为分块消息,其实在不依赖于这两个问题的情况下我们也可以执行许多相同的攻击,在一些条件下后端服务器会忽略Content-Length头,这实际上意味着会忽略传入请求的主体,也就是将Content-Length 视为0的情况,此时如果后端服务器表现出这种行为,但前端仍然使用Content-Length头来确定请求的结束位置,那么我们将有可能通过利用这种差异进行HTTP请求走私 漏洞检测 如果要探测CL.0请求走私漏洞 username=carlos HTTP/1.1 Foo: x Step 5;完成解题: H2.0走私 如果后端服务器忽略已降级请求的Content-Length标头,则将HTTP/2请求降级为HTTP 头选项,设置Content-Length的值为110,随后移除请求body,重新发送数据包,可以看到此时会立即响应并不会有过长的延迟来等待我们指定的长度为110的body报文信息,说明这里忽略Content-Length GET / HTTP/1.1 Host: 0a40005204ca7973811de89500e000af.h1-web-security-academy.net Content-Length:110

    91010编辑于 2024-02-22
领券