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

Python使用Socket发送GET请求访问XAMPP资源返回404如何解决

Socket发送HTTP GET请求返回404问题排查修复方案

核心错误原因

你当前构造的GET请求路径存在冗余前缀错误:HTTP请求行的路径是相对于服务端站点根目录(XAMPP对应htdocs目录)的相对路径,你在路径前多加了/localhost,会导致Apache去htdocs目录下查找名为localhost的文件夹,该目录不存在自然返回404。
假设你的文件存放路径为htdocs/trabalho/1.txt、htdocs/trabalho/2.txt,正确的请求路径应为/trabalho/1.txt,无需加localhost前缀。

排查步骤

  • 先通过浏览器直接访问http://127.0.0.1/trabalho/1.txt验证路径有效性,如果浏览器也返回404,先确认trabalho文件夹是否存放在htdocs根目录、文件名是否存在拼写/大小写错误。
  • 打印完整的服务端返回报文,查看404响应中提示的未找到路径,可直接定位路径拼接错误。
  • 可在请求头中添加Connection: close字段,避免服务端保持长连接导致recv方法长时间阻塞。

修复后代码

from socket import*

# 服务端IP、端口
HOST = '127.0.0.1'
PORT = 80

# 创建TCP socket
clientSocket = socket(AF_INET, SOCK_STREAM)

# 建立与服务端的连接
clientSocket.connect((HOST,PORT))

# 选择要请求的诗人文件
print('请选择你最喜欢的诗人: ')
voto = input('1-路易斯·德·卡蒙斯 或 2-费尔南多·佩索阿')

# 构造GET请求
pedidoHTTP = None
if(voto == '1'):
    # 移除路径中的/localhost前缀,添加Connection: close头
    pedidoHTTP =  f"GET /trabalho/1.txt HTTP/1.1\r\nHost: {HOST}:{PORT}\r\nConnection: close\r\n\r\n".encode()
elif(voto == '2'):
    pedidoHTTP = f"GET /trabalho/2.txt HTTP/1.1\r\nHost: {HOST}:{PORT}\r\nConnection: close\r\n\r\n".encode()
else:
    print('请输入1或2进行有效选择')
    clientSocket.close()
    # 输入非法时直接退出,避免后续执行sendall报错
    exit()
       
clientSocket.sendall(pedidoHTTP)

# 读取服务端返回
Rececao = clientSocket.recv(8000).decode()
# 打印返回结果验证
print(Rececao)
clientSocket.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:03