想象一下,webbrowser向远程服务器发出HTTP请求,例如site.example.com
如果浏览器配置为使用代理服务器,请使用端口8080将其命名为proxy.example.com,请求现在哪种方式不同?
显然,请求现已发送到proxy.example.com:8080,但肯定会有其他更改才能让代理向原始网址发出请求?
答案 0 :(得分:1)
向CONNECT或服务器范围以外的代理发出请求时 OPTIONS请求(如下所述),客户端必须发送目标 绝对形式的URI作为请求目标。
absolute-form = absolute-URI
请求代理服务该有效请求 如果可能,缓存,或代表客户端发出相同的请求 到下一个入站代理服务器或直接到源 请求目标指示的服务器。对此类的要求 消息的“转发”在Section 5.7中定义。
请求行的绝对形式示例如下:
GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
因此,如果没有代理,则会与www.example.org:80
:
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org
使用代理进行proxy.example.com:8080
:
GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org
在后一种情况下,Host
标头是可选的(对于HTTP / 1.0客户端),并且必须由代理重新计算。
答案 1 :(得分:1)
代理只是代表原始客户提出请求。因此,名称“代理”,与法律术语中的含义相同。浏览器将其请求发送到代理,代理向请求的服务器发出请求(或者不是,取决于代理是否要转发此请求或拒绝它),服务器向代理返回响应,代理返回回复原始客户。除了原始客户端看起来像代理服务器这一事实外,服务器将看到的内容没有根本区别。代理可能会也可能不会改变请求,它可能会也可能不会对其进行缓存;意味着如果代理决定提供缓存版本,服务器可能根本不会收到请求。