系统信息:Windows 7 64-bit VirtualBox 4.2.18 Ubuntu 12.04 Guest Apache 2 安装并运行
在终端上运行 HEAD / HTTP/1.0 返回服务器作为 Oversee Turing v1.0.0
为什么服务器将自己标识为 Oversee Turing?
除了 Web 服务器统计站点之外,似乎没有太多在线信息。
我想知道是否有更多的背景信息。
您没有查询本地服务器的 HEAD 响应。您正在查询的服务器是您的本地文件系统,file:/
用于您的第一个参数和http.com
第二个参数。所以不用担心,您的 Apache 不会将自己标识为,Oversee Turing
除非您告诉它这样做。既然你给出了两条路径,你会得到两个响应吗?
存在很多检查标头的方法,因为这不是问题,所以我不会介绍它。
如需深入解释:
首先,当您给出/
HEAD 的路径时,它是否被视为指向文件系统根目录的本地绝对路径,并将扩展为file:/
.
其次,HTTP/1.0
被认为是另一条绝对路径。为了理解论证是如何解释的,我们必须仔细研究下面的来源。但总结起来就是 HEAD
指向perl
脚本的命令。这个 perl 脚本使用uf_uri
一个函数来确定并返回一个用户友好的/usr/share/perl5/URI/Heuristic.pm
完整数据。这是通过运行该函数来完成的。URI
URI
uf_uristr
uf_uristr
将在第 179 行匹配# no scheme specified
,并将进一步添加模式,http
它将用域结尾扩展猜测映射,在第 209+210 行将添加.com
. 不同的域结尾将在第 215 行的 for 中进行测试。测试将使用 完成,gethostbyname("$guess.")
并将设置$host
为当前的$guess
,如果获得工作结果,则退出 for 循环。
然后它将返回URI
到第 226 行的初始 Perl 脚本;
$_ = "$scheme://$host$_";
$scheme = http
$host = http.com
$_ = /1.0
Run Code Online (Sandbox Code Playgroud)
所以最终的 $_ 将是http://http.com/1.0
来源
$ ls -al /usr/bin/HEAD
lrwxrwxrwx 1 root root 11 Nov 23 2011 /usr/bin/HEAD -> lwp-request
$ file /usr/bin/lwp-request
/usr/bin/lwp-request: a /usr/bin/perl -w script, ASCII text executable
Run Code Online (Sandbox Code Playgroud)
注意uf_uri
:
vim +196 /usr/bin/lwp-request +"sp +440 /usr/bin/lwp-request"
Run Code Online (Sandbox Code Playgroud)
uf_uri
调用uf_uristr
它/usr/share/perl5/URI/Heuristic.pm
是包的一部分liburi-perl
。