答案1
简短解决方案:
设置network.http.sendRefererHeader
为 2。
解释为什么该解决方案是这样的:
这里的核心问题是每次请求时发送的标头。只有在主域匹配时才Referer
发送标头是可以的(来自的 referer 标头Referer
a.example.com到b.example.com是允许的,但不能b.otherwebsite.com)。然而,在 Firefox(从 90.0.4 Linux x64 开始)中,有一个设置network.http.sendRefererHeader
被设置为1
(我将其默认为 2),该设置限制Referer
仅在单击链接、按钮等时发送标头,而不管您设置的来源策略如何。
LeetCode 依赖于Referer
向其子域发送的所有请求的标头,无论是针对图像、自定义 UI 组件还是 XHR 请求,都无关紧要。因此,当单击按钮时Submit
,由于它是一个自定义 UI 组件(而不是 HTML 按钮),浏览器不会将其识别为表单按钮,也不会Referer
随其发送标头。LeetCode 服务器认为这是一个机器人请求,或者是某人直接请求组件而没有在上一页,因此随后拒绝它。因此,将该配置设置为2
。