如何使用 telnet 发出请求?
Posted
技术标签:
【中文标题】如何使用 telnet 发出请求?【英文标题】:How to make a request with telnet? 【发布时间】:2013-12-19 05:42:42 【问题描述】:这就是问题所在,使用 firefox 的 livehttp 标头插件,我看到该站点的标头是 GET / HTTP/1.1
。现在,当我从命令行telnet www.***.com 80
telnet 并使用相同的确切标头时,我得到了这个响应
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>
我使用了完全相同的请求。那么为什么响应不同?
【问题讨论】:
因为你省略了Host: thedomainname
标头,它通常跟在第一行之后。 HTTP 请求通常由多行组成。
【参考方案1】:
您没有使用相同的请求。这是我的浏览器向 *** 发出的请求:
GET / HTTP/1.1
Host: ***.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
DNT: 1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Cookie: REDACTED! REDACTED!
Host
标头对于当今大多数网站来说都是必不可少的(因为很多网站都使用虚拟名称托管来允许多个网站(通过主机名区分)托管在一个 IP 地址上。
【讨论】:
以上是关于如何使用 telnet 发出请求?的主要内容,如果未能解决你的问题,请参考以下文章