непрозрачный запрос no-cors для получения ресурса html, заблокированного CORB - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь получить файл html, расположенный по адресу https://sub.app.test/html из https://app.test в режиме no-cors, но ответ заблокирован CORB (блокировка чтения из разных источников).

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

Почему?

1 Ответ

0 голосов
/ 27 февраля 2019

Несмотря на то, что используется режим no-cors (поэтому для ответа не требуется иметь Access-Control-Allow-Origin), запрос блокируется CORB, поскольку html-контент считается ресурсом данных (он может содержать конфиденциальные данные),Любой ресурс с типом MIME text/html (а html вынюхивается в теле ответа или установлен X-Content-Type-Options: nosniff) будет заблокирован CORB, так что конфиденциальные данные не могут быть пропущены с помощью спекулятивных атак по побочным каналам, таких как уязвимости Spectre (ресурс выиграл 'не может быть добавлено в память средства визуализации сайта).

Существует несколько способов обойти это ограничение:

  • обслуживать ресурс из того же источника (app.test)
  • использовать режим cors (сервер должен добавить правильный заголовок Access-Control)
  • изменить тип MIME на что-то отличное от text/html или вообще не устанавливать заголовок (хакерский)

Подробнее:

...