Http 在GET请求中处理完全限定域的正确方法是什么?

Http 在GET请求中处理完全限定域的正确方法是什么?,http,proxy,http-headers,get,dns,Http,Proxy,Http Headers,Get,Dns,我正在写一个代理服务器。例如,当我使用curl获取页面时,curl会发出以下请求: GET /pants HTTP/1.1 当我让curl通过本地代理发送该请求时,curl将GET请求更改为: GET http://www.foo.com/pants HTTP/1.1 此更改导致foo.com服务器返回404。foo.com坏了吗?或者完全限定的域名是否仅对代理服务器有意义?我是否应该总是拒绝我发出的请求 谢谢 由于此代理必须建立到服务器的上游连接,curl(和其他兼容的用户代理)将发送完整

我正在写一个代理服务器。例如,当我使用curl获取页面时,curl会发出以下请求:

GET /pants HTTP/1.1
当我让curl通过本地代理发送该请求时,curl将GET请求更改为:

GET http://www.foo.com/pants HTTP/1.1
此更改导致foo.com服务器返回404。foo.com坏了吗?或者完全限定的域名是否仅对代理服务器有意义?我是否应该总是拒绝我发出的请求


谢谢

由于此代理必须建立到服务器的上游连接,curl(和其他兼容的用户代理)将发送完整的URL。
您的代理必须剥离主机名,将其解析为IP,连接上游,然后发送
GET/pants HTTP/1.1

,因为此代理必须与服务器建立上游连接,所以curl(和其他兼容的用户代理)发送完整的URL。
您的代理必须剥离主机名,将其解析为IP,连接上游,然后发送
GET/pants HTTP/1.1

当客户端通过基于HTTP的代理发送请求时,它必须指定完整的URL,因为代理可能支持可以用URL表示的多个目标协议(即:HTTP、FTP等)。将URL和请求数据传递到下一台服务器时,代理负责将其转换为更合适的格式。

当客户端通过基于HTTP的代理发送请求时,它必须指定完整的URL,因为代理可能支持可以用URL表示的多个目标协议(即HTTP、FTP等)。代理的责任是在将URL和请求数据传递到下一个服务器时将其转换为更合适的格式。

引用自,我强调:

向代理发出请求时,需要绝对URI表单。请求代理从有效缓存转发请求或为其提供服务,并返回响应。请注意,代理可以将请求转发到另一个代理,也可以直接转发到absoluteURI指定的服务器。为了避免请求循环,代理必须能够识别其所有服务器名称,包括任何别名、本地变体和数字IP地址。一个示例请求行是:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
为了允许在未来版本的HTTP中的所有请求中转换为absoluteURI,所有HTTP/1.1服务器必须在请求中接受absoluteURI格式,即使HTTP/1.1客户端仅在对代理的请求中生成它们

引用,我强调:

向代理发出请求时,需要绝对URI表单。请求代理从有效缓存转发请求或为其提供服务,并返回响应。请注意,代理可以将请求转发到另一个代理,也可以直接转发到absoluteURI指定的服务器。为了避免请求循环,代理必须能够识别其所有服务器名称,包括任何别名、本地变体和数字IP地址。一个示例请求行是:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
为了允许在未来版本的HTTP中的所有请求中转换为absoluteURI,所有HTTP/1.1服务器必须在请求中接受absoluteURI格式,即使HTTP/1.1客户端仅在对代理的请求中生成它们