对" http://fakedomain.com/my/abc/redirect.php?url=www.example.com"的GET请求URL结果显示在以下响应标头
中HTTP/1.1 302 Found
Date: Mon, 30 Apr 2018 07:39:12 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Location: www.example.com
Content-Length: 40
Connection: close
Content-Type: text/html; charset=UTF-8
服务器如何准备/用户代理从此位置标头准备URL。
是否将重定向请求发送到" www.example.com "? 要么 是否将重定向请求发送到" http://fakedomain.com/my/abc/www.example.com " ?
为什么会像这样构建网址?
答案 0 :(得分:1)
是否向
www.example.com
发送重定向请求?或者是否将重定向请求发送到http://fakedomain.com/my/abc/www.example.com
?
请求应重定向到http://fakedomain.com/my/abc/www.example.com
。
RFC 7231对Location
标题说明了以下内容(重点是我的):
Location
标题字段在某些响应中用于引用a 与响应相关的特定资源。的类型 关系是由请求方法和 状态代码语义。Location = URI-reference
字段值由单个URI引用组成。 [...]
URI-reference概念在RFC 3986中定义如下(突出显示是我的):
URI-reference用于表示资源的最常见用法 标识符
URI-reference = URI / relative-ref
URI-reference是URI或相对引用。 如果 URI-reference的前缀与后面的方案的语法不匹配 通过冒号分隔符,URI引用是一个亲戚 参考。 [...]
所以www.example.com
应该被解释为relative reference而不是absolute URI。
www.example.com
情况在suffix reference中被描述为RFC 3986:它具有与相对路径引用相同的语法,不能在期望相对引用的上下文中使用(突出是我的):
URI语法旨在明确引用资源和 通过URI方案的可扩展性。但是,作为URI标识和 使用已经司空见惯,传统媒体(电视,广播, 报纸,广告牌等)越来越多地使用后缀了 URI作为引用,仅包含权限和路径 URI的一部分,例如
www.w3.org/Addressing/
或仅仅是DNS注册名称。这样的参考是 主要用于人类解释而非机器, 假设基于上下文的启发式算法足够 完成URI(例如,以
www
开头的大多数注册名称 可能有一个URI前缀http://
)。虽然没有 标准的启发式集,用于消除URI后缀的歧义,很多 客户端实现允许用户输入它们 启发式地解决了。虽然这种使用后缀引用的做法很常见,但它 应尽可能避免,不应使用 预计会有长期参考的情况。启发式 上面提到的将随着时间的推移而改变,特别是在新的URI方案时 变得流行,并且在脱离背景使用时经常是不正确的。 [...]
由于URI后缀与相对路径引用具有相同的语法,因此a 后缀引用不能在相对的上下文中使用 参考是预期的。因此,后缀引用仅限于 没有定义基URI的地方,例如对话框和 离线广告。