【问题标题】:Duplicate request with `Sec-Fetch-User: ?1` header messes up my request throttling带有 `Sec-Fetch-User: ?1` 标头的重复请求扰乱了我的请求限制
【发布时间】:2020-05-08 16:01:53
【问题描述】:

我有一个网站,并且我已经实现了自己的请求限制以提高安全性。

问题在于,从一台特定的机器上,我收到了重复的请求,它们之间几乎相同。这两个请求的生成时间相差毫秒。

当某些 JavaScript 代码以编程方式提交表单时执行原始请求。

它们之间的唯一区别是第一个请求定义了这个标头:

Sec-Fetch-User: ?1

基于this页面,似乎标头意味着第一个请求不是由用户生成的?

该文本非常技术性,我无法深入了解?1 的含义。

有人能告诉我吗?这是否意味着它是由工具生成的,我可以简单地拒绝使用该标头提供请求?

此外,这似乎发生在设备上的任何浏览器(Win10 操作系统)上。知道什么样的软件在这样做吗?为什么?

更新:

查看this 问题后,我尝试在同一台机器上使用非基于 Chromium 的浏览器进行测试,我的印象是这些浏览器上没有发生这种情况。

但我想知道为什么这主要发生在这台特定的机器上,这种行为的含义是什么。

【问题讨论】:

    标签: request http-headers chromium w3c


    【解决方案1】:

    这个IETF draft可以找到答案,?1其实就是true。因此,您观察到的第一个请求很可能是由用户触发的(在提交表单时),而第二个则不是。

    【讨论】:

    • 非常感谢!事实证明,问题很简单,只是跨设备和跨浏览器的不一致行为让我感到害怕。我们正在处理表单提交按钮单击以以编程方式向服务器发出请求,但我们忘记了event.preventDefault()。因此,有重复的请求是有意义的。问题是为什么我们在所有浏览器和所有 PC 中都没有得到相同的行为。真是令人难以置信……无论如何,现在问题已经解决了! :)
    • 嗯,可能是 W3C 规范中遗漏了一些东西,或者浏览器实现得很糟糕。无论如何,不​​客气!
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2019-10-24
    • 2013-01-29
    • 2017-08-31
    相关资源
    最近更新 更多