我正在添加代码以使用代理服务器访问互联网。
从正常 (HTTP) 位置请求文件时,该代码可以正常工作,但在访问安全位置 (HTTPS) 时则不起作用。
这是运行良好的代码:
URL = "http://UnSecureSite.net/file.xml"
Dim wr As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
Dim proxy As System.Net.IWebProxy
proxy = WebRequest.GetSystemWebProxy
wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)
// (more work here)
一旦我将 URL 更改为 HTTPS,我就会收到返回的 407 错误。
有人有主意吗?
URL = "https://SecureSite.net/file.xml"
Dim wr As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
Dim proxy As System.Net.IWebProxy
proxy = WebRequest.GetSystemWebProxy
wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim myCache As New CredentialCache()
myCache.Add(New Uri("https://SecureSite.net"), "Basic", New NetworkCredential(UserName, Password))
wr.Credentials = myCache
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)
// (more work here)
通过 Web 代理的 HTTPS 请求与标准 HTTP 请求不同。常规 HTTP 请求将使用 GET 方法。但是,HTTPS 请求需要使用 CONNECT 方法。然后,代理将仅建立到服务器的隧道。后续消息将通过代理隧道在客户端和服务器之间直接发送。代理无法解释之间流动的数据。
正常情况下:
Client -+- [CONNECT] ---> Proxy --- [DIRECT TCP] -+-> Server
| | |
+-------------[ENCRYPTED TCP]-------------+
我对 VB 代码不太熟悉,不知道是否发生了这种情况。然而,我怀疑事实并非如此。最简单的检查方法是拦截发送到代理的消息。确保它以“CONNECT ...”开头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)