Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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?_Python_Html_Http_Urllib2_Urllib - Fatal编程技术网

如何在没有'的情况下发送请求;主机头';使用Python?

如何在没有'的情况下发送请求;主机头';使用Python?,python,html,http,urllib2,urllib,Python,Html,Http,Urllib2,Urllib,我已经尝试了很多天了,所以在这里我终于要问,对于大多数专家来说,这可能是一个愚蠢的问题。 我正在使用PyUnit对我的应用程序进行API测试。 应用程序(待测试)部署在此处的一个本地服务器上。该应用程序可防止黑客进行恶意活动。因此,我通过此应用程序访问任何网站(受此应用程序保护)。e、 g.http://my-security-app/stackoverflow/login,http://my-security-app/website-to-be-protected等 几乎整个框架都围绕Urll

我已经尝试了很多天了,所以在这里我终于要问,对于大多数专家来说,这可能是一个愚蠢的问题。
我正在使用PyUnit对我的应用程序进行API测试。 应用程序(待测试)部署在此处的一个本地服务器上。该应用程序可防止黑客进行恶意活动。因此,我通过此应用程序访问任何网站(受此应用程序保护)。e、 g.
http://my-security-app/stackoverflow/login
http://my-security-app/website-to-be-protected

几乎整个框架都围绕Urllib和Urllib2运行

场景:-我需要使用python发送一个不带“Host”头的请求,或者发送一个头名为“Host123”而不是原始名称的请求

我一直在尝试下面提到的代码。但这对我不起作用

“由于异常:[Errno 9]错误的文件描述符,测试失败”

任何帮助都将不胜感激

提前谢谢

为此使用测试服务器。顺便说一句,它是用Python编写的

说明:

测试HTTP库有时会变得很困难。PostBin.org是 非常适合测试POST请求,但其他的就不多了。这是为了 涵盖各种HTTP场景。正在创建其他端点 考虑(例如/放气)

所有端点响应都是JSON编码的


Author甚至基于此服务器在

提供公共服务。根据定义,响应由服务器发送。如果它被发送到服务器,那么它就是一个请求。如果服务器发送请求,那么它将扮演exchange客户端的角色。无论如何,您可以为测试定义一个模拟服务器,该服务器发送预配置的响应,其中包含您喜欢的内容。感谢Sebastian的快速响应。甚至我也对术语“响应”感到困惑,因为根据我的理解,我们无法使用python操纵来自服务器的响应。现在来谈谈我们的问题。假设我想检查是否可以在请求中向服务器发送重复的头。你能提供一些帮助吗?你需要更具体一点,也就是提供一个发送头并显示你试图复制头的方法。我知道了,Sebastian,我发送了一些数据(请求),这样我可以得到两次特定头的响应。谢谢你的合作。我现在还有一个挑战。在相同的场景中,我需要在发送请求之前将请求中的“Host”替换为“Host123”。有什么线索吗?您可以直接使用
socket
发送无效的http请求。这是
    host = "12.1.3.16"
    with closing(socket.create_connection((host, 80))) as s:
     # send request without Host header
        s.sendall(b"GET /mywebsite/administrator/ HTTP/1.1\r\n" +
        #"Host12:{}\r\n".format(host).encode('ascii', 'strict') +
        b"Connection: close\r\n\r\n")