如何使用 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 发出请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Telnet 发送 HTTP 请求 [关闭]

如何使用 Telnet 生成 HTTP POST 请求?

telnet客户端模拟浏览器发送请求

是否可以通过 telnet 发送 LDAP“请求”?

如何使用操作查询发出多个 Alamofire 请求

如何使用 React Redux 发出 post 请求?