代理是否应该更改 HTTP 请求 URI
Should a proxy ever change the HTTP request URI
根据 RFC2616,向代理发出请求时需要使用 absoluteURI 格式。
假设我有一个场景,其中我的 HTTP GET 请求通过代理:
GET /test.html HTTP/1.1
主持人:example.com
Proxy 将请求 uri 转发为:
http://example.com/test.html
是否应该存在代理将请求 uri 转发为以下情况的情况:
/test.html
我问的原因是因为有些服务器有不同的重定向策略,其中包括原始URI,所以基本上重定向位置变成:
(举个例子)
http://example.com/test.htmlhttp://example.com/redirect.html
所以重定向变得不正确。
只是想知道是否应该由代理工作来解决这个问题?
So lets say I have scenario in which my HTTP GET request is going through a proxy: GET /test.html HTTP/1.1 Host: example.com
这不是对代理的有效请求。那必须是完整的URL,所以请求应该是:
GET http://example.com/test.html HTTP/1.1
收到此消息后,向源服务器发出请求的代理确实应该将其传递给 example.com
为:
GET /test.html HTTP/1.1
Host: example.com
所以是的,代理不仅应该而且必须传递与其收到的请求 URI 不同的请求 URI。 (与另一个代理交谈的情况除外。)
so basically the redirection location becomes: (As an example) http://example.com/test.htmlhttp://example.com/redirect.html
不识别请求中的绝对 URL 并将其视为相对 URL 的服务器将表现不正确。作为 RFC 7230 states:
To allow for transition to the absolute-form for all requests in some
future version of HTTP, a server MUST accept the absolute-form in
requests, even though HTTP/1.1 clients will only send them in
requests to proxies.
根据 RFC2616,向代理发出请求时需要使用 absoluteURI 格式。
假设我有一个场景,其中我的 HTTP GET 请求通过代理: GET /test.html HTTP/1.1 主持人:example.com
Proxy 将请求 uri 转发为: http://example.com/test.html
是否应该存在代理将请求 uri 转发为以下情况的情况: /test.html
我问的原因是因为有些服务器有不同的重定向策略,其中包括原始URI,所以基本上重定向位置变成: (举个例子) http://example.com/test.htmlhttp://example.com/redirect.html 所以重定向变得不正确。
只是想知道是否应该由代理工作来解决这个问题?
So lets say I have scenario in which my HTTP GET request is going through a proxy: GET /test.html HTTP/1.1 Host: example.com
这不是对代理的有效请求。那必须是完整的URL,所以请求应该是:
GET http://example.com/test.html HTTP/1.1
收到此消息后,向源服务器发出请求的代理确实应该将其传递给 example.com
为:
GET /test.html HTTP/1.1
Host: example.com
所以是的,代理不仅应该而且必须传递与其收到的请求 URI 不同的请求 URI。 (与另一个代理交谈的情况除外。)
so basically the redirection location becomes: (As an example) http://example.com/test.htmlhttp://example.com/redirect.html
不识别请求中的绝对 URL 并将其视为相对 URL 的服务器将表现不正确。作为 RFC 7230 states:
To allow for transition to the absolute-form for all requests in some future version of HTTP, a server MUST accept the absolute-form in requests, even though HTTP/1.1 clients will only send them in requests to proxies.