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

Python socket练习代码请求Web资源返回400 Bad Request问题求助

问题原因

触发400 Bad Request错误的核心原因有2处:

  • 你已经通过socket.connect和data.pr4e.org的80端口建立了TCP连接,HTTP 1.0协议规定GET请求后仅需填写资源的相对路径,不需要带完整域名前缀,多余的域名信息会被服务器判定为非法请求格式
  • HTTP协议标准要求所有行分隔符必须是\r\n(即CR+LF),你代码里只用了\n作为换行符,大部分Web服务会直接拒绝这种不符合规范的请求

修复后的可用代码

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org',80))
# 调整请求路径为相对路径,换行符替换为协议要求的\r\n
cmd = 'GET /romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode())
mysock.close()

补充说明

如果后续需要使用HTTP 1.1协议发起请求,还需要额外补充Host请求头才能正常请求,请求内容写法如下:

GET /romeo.txt HTTP/1.1\r\nHost: data.pr4e.org\r\n\r\n

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:24:03