Chrome为什么会用GET请求淹没我的网站?

时间:2019-11-25 14:07:41

标签: c# asp.net-mvc google-chrome iis

我的IIS托管网站经常出现问题,其中一个我的客户浏览器(Google Chrome 77/78或更高版本)突然开始每秒向我的网站提交同一页面的数十个请求。

该用户始终是我的应用程序中经过身份验证的有效用户。这些请求似乎也没有遵循我可以从日志中确定的任何标准模式。例如,这不是授权重定向问题,这几乎就像浏览器正在通过数十个由用户以某种方式发起的请求发送一样。例如,数十次打开我们页面的书签版本。

查看请求的详细信息,我可以看到以下提取标头:

   HTTP_SEC_FETCH_USER: ?1
   HTTP_SEC_FETCH_SITE: none
   HTTP_SEC_FETCH_MODE: navigate

据我所知,就ajax请求或页面刷新而言,该操作是用户启动的,并且并非来自我自己的应用程序。例如,当我在Chrome的新标签页中打开页面时,只能获得上述提取标头的组合。

这实际上与Chrome浏览器本身有关吗?我无法在开发中复制该问题,但是现在已经发生了几次,而且我不确定从何处着手确定原因。

1 个答案:

答案 0 :(得分:1)

正如其他用户在评论中指出的那样,这实际上可能是由Mobile Chrome Predictive Loading机制引起的。

最新版的Android版Chrome浏览器(78.0.3924.108)已经尝试了预测性加载,当选择了预取链接时会更改规则。在访问您的网站时,这可能会导致在没有任何用户输入的情况下“加载”任意链接(发出GET请求,扭曲统计信息并导致操作产生任何副作用)。

这在过去一周内已经推出,并且在许多不同的情况下导致了许多问题(注销用户,单击付费或聚合链接等)

有关Chromium问题跟踪器的更多信息: https://bugs.chromium.org/p/chromium/issues/detail?id=1027991

通过预取发出的请求会发出Purpose: prefetch标头-至少由Chrome来说,其他浏览器可能会发出其他标头

此后于今天早上(2019年11月25日)解决。