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

基于Python Socket实现HTTP DELETE方法遇400错误求助

问题:HTTP DELETE请求返回400 Bad Request(无效主机名)

我已成功实现HTTP的GET、HEAD、POST和OPTIONS方法,这些方法均可正常运行,但无法实现DELETE方法。

我的代码

import socket
# creating socket instance
# socket.AF_INET = IPV4
# type=socket.SOCK_STREAM = TCP

s = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)

# target ip address and port
ip_address = '127.0.0.1'
port = 80      # Connection port
# instance requesting for connection to the specified address and port
try:
    s.connect((ip_address,port))
    # Send the DELETE request
    request = "DELETE /fmweb/test.html HTTP/1.1\r\n"
    request = request + "Accept: text/html\r\n\r\n"
    
    response = s.send(request.encode())
    response = s.recv(4096)
    print(response.decode())

except:
    print("Error")
finally:
    s.close()

错误响应

我尝试在IIS中添加DELETE谓词并做了多种配置,但问题仍未解决,返回的错误响应如下:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Thu, 20 Jul 2023 15:49:47 GMT
Connection: close
Content-Length: 334

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>

问题分析与修复方案

核心问题

错误提示明确指向无效主机名,这是因为HTTP/1.1协议要求所有请求必须包含Host头部字段,你的DELETE请求里缺少了这个必填项。虽然之前的GET、POST等方法可能在部分服务器兼容配置下能正常执行,但严格遵循HTTP/1.1规范的服务器会拒绝没有Host头的请求。

代码修复

只需在请求中添加Host头部即可:

# 修改后的请求构建代码
request = "DELETE /fmweb/test.html HTTP/1.1\r\n"
request += "Host: 127.0.0.1\r\n"  # 新增Host字段,值与目标IP一致
request += "Accept: text/html\r\n\r\n"

IIS配置补充检查

即使修复了请求,仍需确保IIS侧配置正确:

  • 确认对应站点的请求筛选规则中已允许DELETE谓词
  • 检查目标资源所在的应用程序池具备足够权限执行删除操作
  • 若目标是静态HTML文件,IIS默认不允许直接删除静态资源,需通过动态处理程序(如ASP.NET、PHP等)来实现删除逻辑

内容的提问来源于stack exchange,提问作者Fazal Masud Kundi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:53:29