Pie*_*thé 1 networking telnet http
我正在学习一些网络知识,但在第一个练习中遇到了问题:
我应该使用 telnet 向 httpbin.org 发送一个基本的 HTTP GET 请求。
这是我输入的内容:
$ telnet www.httpbin.org 80
Trying 23.23.171.5...
Connected to www.httpbin.org.herokudns.com.
Escape character is '^]'.
GET /ip HTTP/1.0
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
HTTP/1.1 400 Bad Request
Server: Cowboy
Date: Tue, 09 Jan 2018 20:06:36 GMT
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
问题是在需要 HTTP 1.1 的服务器上使用 HTTP 1.0(以及作为 HTTP 1.1Host:
强制性部分的标头),可能是因为它可能在一个 IP 地址上对多个网站进行虚拟托管。或者,它可能在一个 HTTP 负载平衡器或反向代理背后,它们基本上在做同样的事情:在一个 IP 地址和端口后面支持多个单独的 Web 服务器域名。
这对我有用:
$ telnet www.httpbin.org 80 正在尝试 23.23.171.5... 连接到 www.httpbin.org.herokudns.com。 转义字符是“^]”。 获取 /ip HTTP/1.1 主持人:www.httpbin.org
……我回来了……
HTTP/1.1 200 正常 连接:保持连接 服务器:meinheld/0.6.1 日期:2018 年 1 月 9 日,星期二 22:01:19 GMT 内容类型:应用程序/json 访问控制允许来源:* 访问控制允许凭据:true X-Powered-By:烧瓶 X 处理时间:0.000454902648926 内容长度:32 通过:1.1 vegur { "origin": "[我的 IPv4 地址已编辑]" } ^] 远程登录> 关闭 $
请注意,连接保持打开状态,我不得不退出telnet>
提示以关闭。我本可以通过向Connection: close
我的请求添加标头来避免这种情况。
如果您尝试带有Host:
标头的HTTP/1.1并且它仍然不适合您,请确保您的 telnet 客户端正在发送 CRLF 而不仅仅是回车或换行符。确保在最后一行之后以额外的 CRLF 结束您的请求。
归档时间: |
|
查看次数: |
9729 次 |
最近记录: |