使用HTTP代理时浏览器会进行哪些更改?

时间:2015-03-09 13:54:03

标签: http http-proxy

想象一下,webbrowser向远程服务器发出HTTP请求,例如site.example.com

如果浏览器配置为使用代理服务器,请使用端口8080将其命名为proxy.example.com,请求现在哪种方式不同?

显然,请求现已发送到proxy.example.com:8080,但肯定会有其他更改才能让代理向原始网址发出请求?

2 个答案:

答案 0 :(得分:1)

RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, Section 5.3.2. absolute-form

  

向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)

代理只是代表原始客户提出请求。因此,名称“代理”,与法律术语中的含义相同。浏览器将其请求发送到代理,代理向请求的服务器发出请求(或者不是,取决于代理是否要转发此请求或拒绝它),服务器向代理返回响应,代理返回回复原始客户。除了原始客户端看起来像代理服务器这一事实外,服务器将看到的内容没有根本区别。代理可能会也可能不会改变请求,它可能会也可能不会对其进行缓存;意味着如果代理决定提供缓存版本,服务器可能根本不会收到请求。