我在某个客户端上通过互联网请求HTTPS服务时遇到问题,当我尝试这样做时会抛出异常" ServicePointManager不支持使用https方案的代理#34;。在某些客户端上,我的代码工作正常,但在某些客户端上,它会因异常而失败我认为代码工作正常的客户有http代理,https流量来自http代理,这非常好。
此功能会创建一个新请求:
var req = (HttpWebRequest)WebRequest.Create(url);
// This thing is needed to get default proxy
// and user credentials written in iexplore
var proxy = req.Proxy;
if(proxy != null) {
var puri = proxy.GetProxy(req.RequestUri);
var prox = new WebProxy(puri.ToString());
prox.Credentials = CredentialCache.DefaultCredentials;
req.UseDefaultCredentials = true;
req.Proxy = prox;
}
// Setting up custom cookies and UA
req.CookieContainer = Config.Cookies;
req.UserAgent = Config.UserAgent;
这就是我接受所有证书的方式:
ServicePointManager.ServerCertificateValidationCallback =
(sender, cert, chain, sslpolicy) => true;
ServicePointManager似乎并不支持通过https使用代理。我该如何解决这个问题?如果我以某种方式使https WebRequest通过http代理而不是https,这会起作用,如果是这样,我该怎么办呢?
答案 0 :(得分:0)
是的,您是对的,似乎ServicePointManager不支持https方案的代理。
如果将方案从HTTPS更改为HTTP,它将可以正常工作。
这只是客户端和代理之间的不安全或SSL上的初始请求。取决于服务器,通过代理隧道传输的流量是加密的还是不加密的。
如果您尝试通过HTTP代理访问任何SSL服务器,则流量仍被加密。
让我们说,如果您仍尝试通过HTTPS代理访问HTTP服务器,则不会对通信进行加密。