yangxikun / gsproxy

golang simple proxy
BSD 3-Clause "New" or "Revised" License
94 stars 32 forks source link

http 协议connect 报文格式里面第一行就是目标服务器地址吧 ,host是第二行代理服务器地址 ? getTunnelInfo 和 parseRequestLine 处理逻辑好像有问题 #5

Open uyplayer opened 1 year ago

uyplayer commented 1 year ago

CONNECT server.example.com:80 HTTP/1.1 Host: server.example.com:80 Proxy-Authorization: basic aGVsbG86d29ybGQ=

比如以上格式 : 第一行 目标服务器地址 第二行 代理服务器地址

func parseRequestLine(line string) (method, requestURI, proto string, ok bool) {
    s1 := strings.Index(line, " ")
    s2 := strings.Index(line[s1+1:], " ")
    if s1 < 0 || s2 < 0 {
        return
    }
    s2 += s1 + 1
    return line[:s1], line[s1+1 : s2], line[s2+1:], true
}

CONNECT server.example.com:80 HTTP/1.1 这行应该split来截取才对?

yangxikun commented 1 year ago

第一行和第二行都是目标服务器地址。 是可以直接用 strings split 实现解析。