对于HTTP请求来说,至少需要什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

我试图netcat通过执行以下操作向我的本地服务器发出GET命令:

echo -e "GET / HTTP/1.1\nHost: localhost" | nc localhost 80

我得到了HTTP/1.1 400 Bad Request这个答复。是否至少需要一个HTTP请求?

提问于
用户回答回答于

它必须使用CRLF行结束符,并且必须\r\n\r\n以空行结束。这是我使用的:

printf 'GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n' |
  nc www.example.com 80
用户回答回答于

如果请求是:"GET / HTTP/1.0\r\n\r\n"那么响应包含标题以及正文,并且连接在响应之后关闭。

如果请求是:"GET / HTTP/1.1\r\nHost: host:port\r\nConnection: close\r\n\r\n" 那么响应包含标题以及正文,并且连接在响应之后关闭。

如果请求是:"GET / HTTP/1.1\r\nHost: host:port\r\n\r\n"那么响应包含标题以及正文,并且即使在响应之后连接也不会关闭。

如果请求是:"GET /\r\n\r\n"那么响应中不包含头部和只有主体,并且连接在响应之后关闭。

如果请求是:"HEAD / HTTP/1.0\r\n\r\n"那么响应只包含头部和不包含主体,并且连接在响应之后关闭。

如果请求是:"HEAD / HTTP/1.1\r\nHost: host:port\r\nConnection: close\r\n\r\n"那么响应只包含头部和不包含主体,并且连接在响应之后关闭。

如果请求是:"HEAD / HTTP/1.1\r\nHost: host:port\r\n\r\n"那么响应只包含头部和不包含主体,并且连接在响应之后不会关闭。

扫码关注云+社区

领取腾讯云代金券