关于http代理
浏览:4114次 出处信息
缘起
http代理时,域名解析发生在client端还是代理服务器端?
情形1:
不需要connect方法,显然(不显然吗)这种方式只支持http的情况,不支持https的情况
域名解析发生在代理服务器上
使用connect方法 (通过给curl添加 -p 参数实现, 这应该是比较常见和通用的办法)
域名解析发生在代理服务器上

事实上,如果访问的是https的地址,自然会通过使用connect方法的方式实现

情形2:

下面我们看看Golang中关于代理的实现,重点关注域名解析发生在了哪里:
golang代码:
package main
import (
"fmt"
"io/ioutil"
"net"
"net/http"
"os"
"time"
)
func main() {
get()
}
func get() {
url := "http://baidu.com/"
if len(os.Args) > 1 {
url = os.Args[1]
}
res, err := http.Get(url)
check_fail(err)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
check_fail(err)
fmt.Println(string(body))
}通过环境变量设置代理:
export http_proxy=http://10.79.80.245:8888 export https_proxy=http://10.79.80.245:8888
http请求:
和curl实现一致
域名解析发生在代理服务器上

https请求:
和curl实现一致
域名解析发生在代理服务器端
意外发现: golang关于https请求的实现中,代理的connect和后续的数据交互发生在不同的线程中(看pid就能知晓)

建议继续学习:
- HTTPS, SPDY和 HTTP/2性能的简单对比 (阅读:16797)
- 浅析http协议、cookies和session机制、浏览器缓存 (阅读:16707)
- 从输入 URL 到页面加载完成的过程中都发生了什么事情? (阅读:15284)
- HTTP协议Keep-Alive模式详解 (阅读:11494)
- 让安卓手机通过代理翻墙的方法 (阅读:8426)
- 代理的加密部分 (阅读:7837)
- 关于 SOCKS 代理的远端 DNS 解析 (阅读:7329)
- 各种浏览器审查、监听http头工具介绍 (阅读:7235)
- nginx中对http请求处理的各个阶段分析 (阅读:6714)
- nginx上,http状态200响应,PHP空白返回的问题 (阅读:6347)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:Nginx带宽控制 >>
文章信息
- 作者:phpor 来源: PHPor 的Blog
- 标签: http 代理
- 发布时间:2015-02-26 22:18:37
建议继续学习
近3天十大热文
-
[927] WordPress插件开发 -- 在插件使用 -
[133] 解决 nginx 反向代理网页首尾出现神秘字 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 整理了一份招PHP高级工程师的面试题 -
[50] 全站换域名时利用nginx和javascri -
[50] 海量小文件存储 -
[50] 用 Jquery 模拟 select -
[49] CloudSMS:免费匿名的云短信 -
[48] Innodb分表太多或者表分区太多,会导致内 -
[47] jQuery性能优化指南
