【问题标题】:no-cors opaque request for html resource fetch blocked by CORB对 html 资源获取的非 cors 不透明请求被 CORB 阻止
【发布时间】:2019-07-21 11:49:18
【问题描述】:

我正在尝试使用 no-cors 模式从 https://app.test 获取位于 url https://sub.app.test/htmlhtml 文件,但响应被 CORB 阻止(跨域读取阻止)。

fetch('https://sub.app.test/html', { mode: 'no-cors'})

为什么?

【问题讨论】:

标签: cors fetch cross-origin-read-blocking


【解决方案1】:

即使使用no-cors 模式(因此响应不需要允许Access-Control-Allow-Origin),请求仍被CORB 阻止,因为html 内容被视为数据资源(它可能包含敏感数据) .任何具有 MIME 类型 text/html 的资源(并且在响应正文中嗅探 html 或设置了 X-Content-Type-Options: nosniff)都将被 CORB 阻止,这样敏感数据就不会使用 Spectre 漏洞等推测性侧通道攻击泄露(资源不会' t 被添加到站点渲染器的内存中)。

有几种方法可以绕过这个限制:

  • 提供来自同一来源的资源 (app.test)
  • 使用cors模式(服务器需要添加正确的Access-Control标头)
  • 将 MIME 类型更改为 text/html 以外的其他内容,或者根本不设置标题(hacky)

阅读更多:

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 2018-10-18
    • 2020-08-16
    • 2022-11-01
    相关资源
    最近更新 更多