服务器对从浏览器和 Fiddler 发送的相同请求的响应不同

A server responds differently to the same request sent from a browser and Fiddler

  1. 在 Chrome 的隐身选项卡中打开 URL => 服务器响应 HTTP 200 OK 代码和 HTML 页面。
  2. 使用 Fiddler 重播完全相同的请求 => 服务器响应 HTTP 301 重定向到相同的 URL。
  3. 关闭隐身标签,打开一个新标签,再次打开相同的 URL => 再次 HTTP 200 OK 代码...

我已经验证每次您打开 URL 时从浏览器发送的请求都完全相同(嗯,它不可能不同,因为它只是打开一个 URL隐身标签)

服务器如何区分浏览器和Fiddler发送的相同请求? 我第一次看到这样的问题,我不知道如何在这里更深入地挖掘...

请求如下所示:

GET <url> HTTP/1.1
Host: <host>
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8

似乎此服务器已放弃对 TLSv1.0 的支持,.NET Framework 默认使用它。

这里有关于如何将默认 SSL 密码设置为 TLSv1.2 的详细答案:Are there .NET implementation of TLS 1.2?

顺便说一句,可以使用该问题的答案之一中描述的注册表技巧在 .NET 4.0 应用程序中启用 TLSv1.2 支持。那当然是安装的IE支持了。