【问题标题】:Can I programmatically detect whether a CORB error occurred?我能否以编程方式检测是否发生了 CORB 错误?
【发布时间】:2021-03-12 18:51:10
【问题描述】:

我正在寻找一种方法来以编程方式检测(使用 JavaScript)我的页面上的资源加载(我可以完全控制)是否被 Cross-Origin Resource Blocking 阻止。

例如,由于来自 https://example.com 的响应具有 Content-Type text/html; charset=UTF-8,因此以下 HTML 代码将在基于 Chromium 的浏览器中触发 CORB 错误:

<script src="https://example.com"></script>

但是我怎样才能检测到它发生了呢?简单地为脚本元素上的error 事件添加一个处理程序是行不通的;例如,以下代码不会打开对话框:

<script src="https://example.com" onerror="alert('CORB!')"></script>

请注意,我修复 CORB 错误或检查 CORB 错误的内容感兴趣;我只对以编程方式检测是否发生 CORB 错误感兴趣。这可能吗?

【问题讨论】:

  • 你真的需要说这是因为 CORB 还是仅仅是错误就够了?顺便说一句,这似乎是一个 Chrome 错误,脚本没有错误。他们确实在 img 上开火了:jsfiddle.net/31y2dmt9
  • @Kaiido 很抱歉没有早点回复你,我自己正在研究这个话题。脚本没有错误不是 Chrome 的 bug,因为 Chrome 移除了响应的主体,空的响应是有效的 JS。它会为图像触发,因为空响应不是有效图像。

标签: javascript chromium detection cross-origin-read-blocking


【解决方案1】:

我很高兴被证明是错误的,但根据我目前所读到的内容,以编程方式检测是否发生了 CORB 错误是不可能的,至少在一般情况下是不可能的。

但是,在某些情况下,您可能会跨域泄露一些信息:

Cross-Origin Read Blocking (CORB) 是一种 Web 平台安全功能,旨在减少 Spectre 等投机性侧信道攻击的影响。 不幸的是,阻止某些类型的请求引入了一种新的 XS-Leaks,它允许攻击者检测是否对一个请求强制执行了 CORB,但对另一个请求没有强制执行。

(来源:https://xsleaks.dev/docs/attacks/browser-features/corb/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-02-15
  • 2018-12-24
  • 1970-01-01
  • 2022-01-18
  • 2012-09-19
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多