Я разрабатываю расширение Chrome, которое отправляет запросы с определенных веб-сайтов на контролируемый мной API. До Chrome 73 расширение работало корректно. После обновления до Chrome 73 я начал получать следующую ошибку:
Блокировка чтения из разных источников (CORB) заблокировала ответ из разных источников http://localhost:3000/api/users/1 с типом MIME application / json
Согласно документации Chrome по CORB, CORB блокирует ответ запрос, если все следующие верны:
Ресурс - это «ресурс данных». В частности, тип контента - HTML, XML, JSON.
Сервер отвечает заголовком
X-Content-Type-Options: nosniff
, или, если этот заголовок опущен, Chrome определяет тип содержимого - HTML, XML или JSON, проверяя файл.CORS явно не разрешает доступ к ресурсу
Кроме того, согласно «Уроки от Spectre и Meltdown» (Google I / O 2018), кажется, что может быть важно добавить mode: cors
к fetch
вызовам, т. е. fetch(url, { mode: 'cors' })
.
Чтобы попытаться исправить это, я внес следующие изменения:
Во-первых, я добавил следующие заголовки ко всем ответам моего API:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: https://www.example.com
Во-вторых, я обновил вызов fetch()
в расширении, чтобы он выглядел так:
fetch(url, { credentials: 'include', mode: 'cors' })
Однако эти изменения не сработали. Что я могу изменить, чтобы мой запрос не блокировался CORB?