Closed Mythologyli closed 10 months ago
之前用zju connect的http proxy测试 appservice.zju.edu.cn 的时候也触发过,刷新几次好像就行了,后面可以多测试下
已修复
req.RequestURI = ""
resp, err := client.Do(req)
if err != nil {
w.WriteHeader(500)
w.Write([]byte(err.Error() + "\n"))
return
}
hdr := w.Header()
for k, v := range resp.Header {
hdr[k] = v
}
w.WriteHeader(resp.StatusCode)
io.Copy(w, resp.Body)
此处 http client 默认的行为是自动处理重定向,所以 302 根本不会返回到浏览器
而统一认证登录中对整个路径都进行了 302,这导致请求 js 也会返回重定向后的 html 内容:
func newClient() *http.Client {
return &http.Client{
Transport: &http.Transport{
Dial: func(net, addr string) (net.Conn, error) {
return socks5proxy.Dial(net, addr)
},
},
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
}
直接将重定向交给浏览器
https://www.cc98.org/topic/5708120
当使用 zju-connect 内置的 http 代理时,进行统一身份认证时可能出现界面加载问题:
使用学在浙大测试发现,该现象不是每次都出现,反复登录-注销有几率触发。有时表现为界面加载不全,有时表现为无限重定向;使用 Clash + 内置 SOCKS5 代理,不会出现此现象
目前原因未知,怀疑 http 代理的实现可能存在问题