HTTP服务器应该如何响应它不支持的代理请求';我不想处理?
HTTP请求的第一行包含一个“目标”,它是以下内容之一:HTTP服务器应该如何响应它不支持的代理请求';我不想处理?,http,proxy,Http,Proxy,HTTP请求的第一行包含一个“目标”,它是以下内容之一: request-target = origin-form / absolute-form / authority-form / asterisk-form origin表单是典型的表单,例如,GET/hello world HTTP/1.1。代理请求使用绝对形式: GET https://example.com/ HTTP/1.1 假设该请求到达
request-target = origin-form
/ absolute-form
/ authority-form
/ asterisk-form
origin表单
是典型的表单,例如,GET/hello world HTTP/1.1
。代理请求使用绝对形式
:
GET https://example.com/ HTTP/1.1
假设该请求到达一个源服务器,该服务器只是试图服务于其他域。(例如,假设我们将上述请求发送到en.wikipedia.org
)手头的服务器不希望成为代理服务器,也不希望满足发出的请求。它应该返回什么?(理想情况下,为什么?HTTP RFC中是否有任何地方说明了这一点?)
(我查询了一些服务器,看看实际发生了什么。我得到的数据大多是500、200(但内容不正确),一个409冲突
,在一个特殊情况下,一个301永久移动
,形成了一个无限循环。我觉得客户端向一个服务器发送一个代理请求是一个错误,而这个服务器不能,也不会完成它。服务器及其行为没有任何问题,应该进行更改的领域在于因此,在客户机上是4xx,但我不清楚哪一个是合适的。)好问题。发件人:
5.1.2请求URI
允许将来在所有请求中过渡到AbsoluteURI
在HTTP版本中,所有HTTP/1.1服务器都必须接受绝对URI
即使HTTP/1.1客户端只生成
在对代理的请求中删除它们
以及:
5.2请求确定的资源
由Internet请求标识的确切资源由
检查请求URI和主机头字段
不允许资源因
请求的主机在以下情况下可能忽略主机标头字段值:
确定由HTTP/1.1请求标识的资源。(但请参见
第19.6.1.1节了解HTTP/1.1中关于主机支持的其他要求。)
基于主机区分资源的源服务器
请求(有时称为虚拟主机或虚拟主机
名称)必须使用以下规则来确定请求的
HTTP/1.1请求上的资源: