我试图在 C/C++ 中创建原始套接字,然后创建请求消息,然后将该消息发送到目标服务器。如果我指定的端口恰好是 80
我想发送一个 HTTP 请求以确定目标服务器正在使用的 HTTP 版本。例如,我将 GET HTTP/1.0
发送到 www.google.com
。
对于某些服务器,它返回 HTTP/1.1 400
错误请求。而在某些情况下,它会以 XML 消息进行响应。我知道 GET
命令是错误的,因为我没有指定任何要实际 GET
的对象。那么有没有通用的方法来做到这一点?
最佳答案
尝试:
HEAD / HTTP/1.0\r\n
\r\n
或者:
GET / HTTP/1.0\r\n
\r\n
服务器响应的第一行应该包含 HTTP 版本。请注意,某些服务器将返回 400 Bad Request
如果Host: <hostname>
从 header 中省略(在 1.0 中不需要,但在 1.1 中)。我会这样做:
尝试:
HEAD / HTTP/1.0\r\n
Host: <hostname>\r\n
\r\n
或者:
GET / HTTP/1.0\r\n
Host: <hostname>\r\n
\r\n
如果您不需要邮件正文,您应该使用HEAD
因为它需要更少的数据来接收。
关于c++ - 在 C 中使用原始套接字确定 HTTP 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226211/