C# 为什么Chrome在我的网站上充斥着GET请求?

C# 为什么Chrome在我的网站上充斥着GET请求?,c#,asp.net-mvc,google-chrome,iis,C#,Asp.net Mvc,Google Chrome,Iis,我的IIS托管网站定期出现问题,其中一个客户端浏览器(Google Chrome 77/78或更高版本)突然开始每秒向我的网站提交数十个相同页面的请求 用户在我的应用程序中始终是有效的、经过身份验证的用户。请求似乎也没有遵循我可以从日志中确定的任何标准模式。例如,这不是授权重定向问题,例如,它几乎就像浏览器通过几十个用户发起的请求发送。例如,打开我们页面的书签版本几十次 查看请求详细信息,我可以看到以下获取头: HTTP_SEC_FETCH_USER: ?1 HTTP_SEC_FET

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

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

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

   HTTP_SEC_FETCH_USER: ?1
   HTTP_SEC_FETCH_SITE: none
   HTTP_SEC_FETCH_MODE: navigate
据我所知,这意味着该操作是由用户发起的,而不是来自我自己的应用程序(就ajax请求或页面刷新而言)。例如,当我在Chrome的一个新选项卡中打开我的页面时,我只能得到上面的fetch头组合


这是否真的与Chrome浏览器本身有关?我无法在开发过程中重复这个问题,但现在已经发生过几次了,我不确定从何处着手确定原因。

正如其他用户在评论中指出的,这实际上可能是由移动Chrome预测加载机制造成的

最新版本的Chrome for Android(78.0.3924.108)尝试了预测加载,当选择链接进行预取时,会改变规则。这可能会导致在访问您的网站时,在没有任何用户输入的情况下“加载”任意链接(发出GET请求、扭曲统计数据并导致该操作产生的任何副作用)

在过去的一周里,这种情况不断出现,并在许多不同的场景中引发了许多问题(注销用户、单击付费或聚合器链接等)

有关Chromium问题跟踪程序的更多信息:

通过预取发出的请求会发出一个
目的:预取
标题-至少通过Chrome,其他浏览器可能会发出其他标题


这一点在今天早上(2019年11月25日)就得到了修复。

Chrome声称正在预加载页面(即使用户并没有真正点击链接),因此如果预测错误,这种魔法可能会适得其反,而你可能无法在IIS方面修复。嗨,Lex,是的,这是我首先怀疑的事情之一,但我不知道情况是否如此。幸运的是,我现在有了节流代码,看起来可以防止大规模洪水泛滥,但我真的很想知道为什么会发生这种情况。你有服务攻击吗?为什么你认为这是Chrome?特工是可以伪造的。我会查看客户机,看看该客户机上是否有恶意软件或其他东西。也许是安装了一个扩展?嗨,JAZ和jdweng。因为请求经过身份验证,所以不太可能是dos攻击,但是是的,它可能是受影响客户端上已损坏的扩展或恶意软件。如果可能的话,我必须检查一下。不幸的是,我亲眼目睹了Chrome77和Chrome78的行为。在2个月的时间里,它大约发生了3次,并且当请求被阻止时我们得到的错误不包括一个目的:预回迁头。所以可能与此无关。好吧,太糟糕了。我所描述的击中了我们,所以我现在就把它留在这里,以防它对其他人有帮助。