我第一次使用Telnet并尝试简单地连接到某个网页:http://net.cs.uni-bonn.de/de/wg/cs/lehre/ws-201415/sysprog。为此,我在命令行上给出了以下输入:
telnet net.cs.uni-bonn.de 80
Telnet连接成功,我提出以下请求:
GET /de/wg/cs/lehre/ws-201415/sysprog HTTP/1.1
Host: 127.0.0.1
然后,Telnet返回以下内容:
HTTP/1.1 301 Moved Permanently
Date: Wed, 12 Nov 2014 13:37:06 GMT
Server: Apache/2.2.3 (CentOS)
Location: http://net.cs.uni-bonn.de/de/wg/cs/lehre/ws-201415/sysprog
Cache-Control: max-age=360
Expires: Wed, 12 Nov 2014 13:43:06 GMT
Content-Length: 388
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://net.cs.uni-bonn.de/de/wg/cs/lehre/ws-201415/sysprog">here</a>.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at <a href="mailto:webmaster-4@cs.uni-bonn.de">127.0.0.1</a> Port 80</address>
</body></html>
知道我为什么会收到301错误?我真的很困惑,因为给出的新重定向地址与我输入的地址完全相同,当我在网络浏览器中打开地址时,地址显然有内容。我可以使用相同的语法打开其他网站,但我必须能够将此网站称为我的作业,因此我想知道为什么会出现此错误以及如何解决这个问题...谢谢!
答案 0 :(得分:0)
telnet net.cs.uni-bonn.de 80
Telnet连接成功,我提出以下请求:
GET /de/wg/cs/lehre/ws-201415/sysprog HTTP/1.1 Host: 127.0.0.1
Telnet首先将域名解析为IP地址,并使用IP地址连接到服务器。许多服务器从同一个IP提供多个域名,这就是您需要提供有意义的Host:
标头的原因:
Host: net.cs.uni-bonn.de
如果没有这个,服务器不知道请求的目的地是哪个域名。
在这种特殊情况下,服务器显然知道,但是因为您的HTTP请求格式错误而重定向您。
答案 1 :(得分:0)
由于IPv4地址的限制,多个主机名可以解析为单个IP地址。 HTTP允许每个主机名具有不同的网站,而不必使用不同的端口。您可以在Host标头中指定要请求的主机名。
你说:
Host: 127.0.0.1
它正在重定向您:
http://127.0.0.1/de/wg/cs/lehre/ws-201415/sysprog
到
http://net.cs.uni-bonn.de/de/wg/cs/lehre/ws-201415/sysprog