c# - 是什么导致这个 HTTPS WebRequest 即使在浏览器中工作也会超时?

标签 c# .net https httpwebrequest webrequest

这是我的要求:

var request = (HttpWebRequest) WebRequest.Create("https://mtgox.com/");
request.CookieContainer = new CookieContainer();
request.AllowAutoRedirect = false;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
request.Headers[HttpRequestHeader.AcceptLanguage] = "en-gb,en;q=0.5";
request.Headers[HttpRequestHeader.AcceptCharset] = "ISO-8859-1,utf-8;q=0.7,*;q=0.7";
request.Timeout = 5000;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0";
request.Method = "GET";

request.GetResponse();

header 是使用 HttpFox 从 Firefox 复制的。我使用 Fiddler2 验证至少对于 HTTP 请求,Firefox 请求和我的请求之间的 header 完全相同。

但是,当使用 HTTPS 向这个特定网站 执行请求时,请求会超时。它适用于其他网站。

我必须以不同于 Firefox 的方式执行它,因为它始终在 Firefox 中运行。但是,我无法使用 Fiddler2 对其进行调试,因为每当 Fiddler2 转发这些请求时,它们也会超时,即使是由 Firefox 发起的也是如此。

它真的只是一个漏洞百出的网站吗?以上哪一部分让我觉得不是 Firefox?

最佳答案

使用 Microsoft 网络监视器,我发现 HttpWebRequest 会卡在应该发回客户端 key 交换的阶段。它根本没有。服务器正等着它,但它一直没有来。

修复的是强制 HttpWebRequest 使用 SSL3 而不是 TLS(即使 TLS 应该在必要时自动转换为 SSL3):

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

我想我永远不会知道为什么会这样 - 只是那些神秘的事情之一,比我认识的任何人都愿意花更多的时间来弄清楚......

捕获有一点不同:TLS 变体 had an "Alert" entry in the Server Hello response ,这在 SSL3 交换以及所有实际工作的 TLS 交换中都没有。但奇怪的是,在 Firefox 成功执行请求的捕获中出现了相同的警报。

最后,似乎在我第一次发布这个问题时出现了一个临时的 OCSP 故障,此故障已得到解决。这增加了困惑,但不是核心问题。

关于c# - 是什么导致这个 HTTPS WebRequest 即使在浏览器中工作也会超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653868/

相关文章:

node.js - 保护 Socket.IO Websocket 并将其限制在域中

c# - 向 Windows.Forms 退出按钮添加功能?

java - 如何在 Spring-Boot 中使用 SSL 证书并为 Android 客户端生成公钥

asp.net - HTTPS : How do I Encrypt _only_ the password _only_ when user is signing in or registering?

.net - 如何在 .NET 类的方法和属性中注入(inject)管道代码?

c# - Queue 上的 IEnumerable 迭代器是否应该使项目出列

c# - 将数据从 jQuery Ajax 发送到 MVC COntroller

c# - 将 LINQ 订单查询抽象为多级排序函数

c# - 从表中仅选择几列

c# - 从 C# 中的 Object 继承是多余的吗?