You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构造发送null的HTTP请求以复现Tomcat记录的GET null 400错误

异常HTTP请求复现方案

标准HTTP客户端(包括Postman、浏览器、默认参数的curl)都会自动对请求路径做规范化处理:所有相对路径会自动补全前缀/,因此直接请求http://targethost.com/null会被自动转为GET /null HTTP/1.1,和目标请求格式不符,自然无法复现400响应。

你可以通过直接构造原始TCP请求的方式绕过客户端自动规范化逻辑,以下是3种可直接落地的实现方式:

方法1:使用netcat(nc)手动构造请求(最直观)

  • 首先执行命令连接目标服务,替换为你的实际目标主机和端口:
nc targethost.com 80
  • 连接建立成功后,逐行输入以下内容,输入完最后一行后连续按2次回车触发请求:
GET null HTTP/1.1
Host: targethost.com
Connection: close

操作完成后即可收到Tomcat返回的400响应,对应日志记录和你捕获的原始请求完全一致。

方法2:Python Socket 脚本自动复现

运行以下Python代码即可一键发起请求,替换代码中的目标主机、端口参数即可:

import socket

# 替换为实际目标配置
TARGET_HOST = "targethost.com"
TARGET_PORT = 80

# 构造原始HTTP请求,请求行路径直接填写null无需前缀/
raw_request = b"GET null HTTP/1.1\r\nHost: targethost.com\r\nConnection: close\r\n\r\n"

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((TARGET_HOST, TARGET_PORT))
    s.sendall(raw_request)
    resp = s.recv(4096)

print("响应内容:\n", resp.decode())

方法3:curl 特殊参数实现

curl 7.55及以上版本支持--request-target参数直接指定原始请求路径,无需手动构造TCP包:

curl --request-target null -H "Host: targethost.com" http://targethost.com

内容的提问来源于stack exchange,提问作者suomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:45:05