Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 发送没有内容长度或其他标头的http请求_Python_Http_Http Headers_Httprequest - Fatal编程技术网

Python 发送没有内容长度或其他标头的http请求

Python 发送没有内容长度或其他标头的http请求,python,http,http-headers,httprequest,Python,Http,Http Headers,Httprequest,我想知道是否有一个工具只发送带有给定头的HTTP请求 我需要它来测试一些应用程序,并希望在缺少一些HTTP头时观察应用程序的行为 研究了urllib2、httplib和pycurl,但它们在内部添加了自己的头(在最好的情况下,我们可以指定这些头的值或将这些值设为空) 我需要的是一个实用程序,在这个实用程序中,我可以完全/透明地控制我想在请求中发送的HTTP头(这样我就可以发送缺少内容长度/内容类型等的请求),并且应用程序只使用这些头形成请求,而不在内部添加任何其他内容 我可以通过浏览器插件来实现

我想知道是否有一个工具只发送带有给定头的HTTP请求

我需要它来测试一些应用程序,并希望在缺少一些HTTP头时观察应用程序的行为

研究了urllib2、httplib和pycurl,但它们在内部添加了自己的头(在最好的情况下,我们可以指定这些头的值或将这些值设为空)

我需要的是一个实用程序,在这个实用程序中,我可以完全/透明地控制我想在请求中发送的HTTP头(这样我就可以发送缺少
内容长度
/
内容类型
等的请求),并且应用程序只使用这些头形成请求,而不在内部添加任何其他内容


我可以通过浏览器插件来实现这一点。

有很多方法可以做到这一点,但如果您试图在字节级别完全控制请求,那么使用套接字可能会更容易:

s = socket.socket()
s.connect((host, 80))
s.sendall(myrequest)
实际上,您可以在发送后将套接字连接到一些HTTP解析器库,但这可能是一个复杂的过程。如果您在分析整个结果之后,最好直接从套接字读取整个结果:

s.shutdown(socket.SHUT_WR)
result = ''
while True:
    buf = s.read(4096)
    if not buf: break
    result += buf

正如abartnert所指出的,如果您愿意,您可以使用一个套接字来实现这一点,但我认为值得注意的是,CURL也可以满足您的需求。从手册页,网址:


许多库都有一种方法可以在构建完头之后,但在发送头之前过滤头(尽管在某些情况下可能非常复杂)。这够好吗?为什么不直接连接插座呢?手工制作HTTP请求并不难。或者使用
netcat
他大概是在使用libcurl周围的一个Python包装器,而不是弹出命令行工具。(如果不是,他应该是…)但这一点仍然有效。虽然,如果他想确切地指定他想要的头,他需要一个列表,列出curl可能添加的所有头,否则他将无法告诉它要删除哪些头。谢谢,写一个直接套接字连接是我最后的选择,但他会用上面建议的选项检查curl。@abarnert同意,但是,如果您想查看如果一个“正常”请求缺少某个特定的头时会发生什么情况,那么可以使用这个工具。
Remove an internal header by giving a replacement without
content on the right side of the colon, as in: -H "Host:".