由于请求目标通常只包含用户代理的目标URI的一部分,服务器会重建意图的目标为一个“有效的请求URI”以正确地服务请求。这个重建涉及服务器的本地配置和请求目标、Host头字段值、连接上下文中传达的信息。
对用户代理来说,有效的请求URI就是目标URI。
如果请求目标是绝对形式,有效URI与请求目标一样。否则,有效请求URI将按下述内容构建:
- 如果服务器的配置(或出站网关)提供了一个修正URI方案,那个方案被用于有效请求URI。否则,如果请求通过TLS安全TCP连接接收,有效请求的URI方案是“https”;如果不是,方案是“http”。
- 如果服务器的配置(或出站网关)提供了一个修正URI权威组件,那个权威被用于有效请求URI。如果没有,那么如果请求目标是授权形式,那么有效请求URI的权威组建与请求目标相同。如果不是,那么如果Host头字段是一个非空字段值,那么权威组件与Host的字段值相同。否则,权威组件被指定为为服务器配置的默认名字,并且如果连接的入站TCP端口与有效请求URI的方案匹配的默认端口不同,那么一个冒号“:”以及入站端口(十进制形式)被追加到权威组件。
- 如果请求目标是授权形式或者星号形式,有效请求URI组合的路径和查询组建是空的。否则,组合的路径和查询组件与请求目标相同。
- 有效请求URI的组建一旦被上述规则确定就可以通过连接方案、“://”、权威并组合路径和查询组件,组合为绝对URI形式。
例1: 下列消息通过一个不安全TCP连接接收
GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.example.org:8080
其有效URI请求为
http://www.example.org:8080/pub/WWW/TheProject.html
例2: 下列消息通过一个TLS安全TCP连接接收
OPTIONS * HTTP/1.1 Host: www.example.org
其有效URI请求为
https://www.example.org
一个缺少Host头字段的HTTP/1.0请求的接收者可能需要使用启发式(例如,检查某个特定主机所特有的URI路径)以猜测有效请求URI的权威组件。
一旦有效请求URI被构建,源服务器需要决定是否通过接收请求的那个连接为那个URI提供服务。例如,请求可能被有意或无意的错误定向,这样接收到的请求目标中的信息或者Host头字段就不同于连接建立的主机或者端口。如果连接来自一个可信的网关,那个矛盾可以被预料,否则它可能表明了一个意图来绕过安全过滤器,欺骗服务器传送不公开的内容或者污染缓存。查看第9节了解关于消息路由的安全注意事项。