这是问题所在,使用firefox的livehttp头插件我看到网站的标题是GET / HTTP/1.1
。现在,当我从命令行telnet www.stackoverflow.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>
我使用了相同的确切请求。为什么响应不同?
答案 0 :(得分:3)
你没有使用相同的请求。这是我的浏览器对Stackoverflow的请求:
GET / HTTP/1.1
Host: stackoverflow.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地址上。