当存在 cookie 时,BBC 服务器上会出现 HTTP2 帧错误

当存在 cookie 时,BBC 服务器上会出现 HTTP2 帧错误

这是一个真的听起来很疯狂的奇怪问题......听我说:

当我在 Chrome 或 Firefox 上登录 BBC 时,什么都没有加载。没有新闻、iPlayer 等。Firefox 报告 NS_ERROR_NET_TIMEOUT。Chrome 报告 ERR_HTTP2_SERVER_REFUSED_STREAM。

当我退出时(即删除我的 cookies),BBC 网站可以正常运行。

当我再次登录时,服务器没有响应。

不同的 BBC 帐户都存在此问题。

这个问题似乎只发生在BBC上。

此问题仅出现在我家的 WiFi 网络上。我已通过网络共享连接到手机,此问题未发生。

此问题仅出现在 Ubuntu 上。我已启动到 Windows,一切正常。

我的家庭网络上的其他(Ubuntu)设备没有出现此问题 - 我的笔记本电脑等一切正常。

当我通过以太网连接到网络时不会出现此问题。

如果我更改网络上的 IP 地址,仍然会出现此问题。

如果我连接到路由器的访客 WiFi 网络,仍然会出现此问题。

因此,此特定的 Ubuntu 安装、特定的 WiFi 网络和 cookie 的存在导致 BBC 服务器以某种方式不可用。

有人知道这是什么原因造成的吗?我完全糊涂了。

这是两个请求的 cURL,一个有效,一个无效,其中我的令牌已被删除...

curl 'https://www.bbc.co.uk/news' \
  -H 'authority: www.bbc.co.uk' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'accept-language: en-GB,en;q=0.9' \
  -H 'cache-control: max-age=0' \
  -H 'cookie: ckns_explicit=0; ckns_policy=000; ckns_policy_exp=1692715113061; ckns_privacy=july2019; atuserid=%7B%22name%22%3A%22atuserid%22%2C%22val%22%3A%2257dcff47-1ed3-429a-bd77-9555363a544c%22%2C%22options%22%3A%7B%22end%22%3A%222023-09-23T14%3A38%3A33.079Z%22%2C%22path%22%3A%22%2F%22%7D%7D; ecos.dt=1661179121656' \
  -H 'sec-ch-ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Linux"' \
  -H 'sec-fetch-dest: document' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-site: none' \
  -H 'sec-fetch-user: ?1' \
  -H 'upgrade-insecure-requests: 1' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36' \
  --compressed

^^这使我能够正确访问网站。

curl 'https://www.bbc.co.uk/news' \
  -H 'authority: www.bbc.co.uk' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'accept-language: en-GB,en;q=0.9' \
  -H 'cache-control: max-age=0' \
  -H 'cookie: ckns_explicit=0; ckns_policy=000; ckns_privacy=july2019; ckns_policy_exp=1692715164370; atuserid=XXX; ckns_id=XXX; ckns_atkn=XXX; ckns_idtkn=XXX; ecos.dt=XXX' \
  -H 'sec-ch-ua: "Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Linux"' \
  -H 'sec-fetch-dest: document' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-site: none' \
  -H 'sec-fetch-user: ?1' \
  -H 'upgrade-insecure-requests: 1' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36' \
  --compressed

这导致curl: (16) Error in the HTTP2 framing layer

需要明确的是,当连接到不同的 WiFi 网络并且启动到 Windows 而不是 Ubuntu 时,第二个请求能够成功工作。

有人有什么想法吗?说实话,这不是什么大问题,我只是对发生的事情感到非常困惑。

谢谢,

相关内容