Введите Origin приложения
Нужны схема, хост и порт вызывающей страницы, а не URL API. Локальная модель допускает выбранный Origin; реальный GET браузера всегда идёт с Origin этого сайта.
HTTP / Отладка запросов
Вставьте фактический ответ и при необходимости OPTIONS. Сетевой GET запускается только вручную.
Вставленные заголовки анализируются в браузере без сетевого запроса.
Вставьте заголовки ответа.
Этот Origin относится только к локальному анализу. GET использует настоящий Origin страницы.
Вставьте заголовки ответа.
Сервер записал HTTP 200, а fetch сообщает об ошибке? Проверка CORS отделяет HTTP-ответ сервера от права JavaScript прочитать его в браузере.
Чтобы проверить CORS онлайн без отправки запроса, начните с заголовков из DevTools. Укажите Origin приложения, метод и имена заголовков; если нужен preflight, добавьте отдельный ответ OPTIONS.
Успех HTTP и разрешение на чтение — разные события.
Простой GET может дойти до сервера, но без верного Allow-Origin браузер не отдаст ответ скрипту. Проверка CORS не называет HTTP-успех разрешением доступа.
JSON POST и Authorization могут требовать предварительный запрос. Если есть лишь итоговый ответ, его прохождение неизвестно. Добавьте статус OPTIONS и разрешающие заголовки.
Нужны схема, хост и порт вызывающей страницы, а не URL API. Локальная модель допускает выбранный Origin; реальный GET браузера всегда идёт с Origin этого сайта.
application/json, Authorization и нестандартные методы могут вызвать предварительный запрос. Достаточно имён заголовков. Без ответа OPTIONS вывод по этому этапу не подтверждён.
Изменение данных сразу блокирует копирование старого результата. Автоанализ ждёт 350 мс; после выключения запустите кнопку или Ctrl/Cmd + Enter.
При credentials: include шаблон Allow-Origin: * запрещён. Точный Origin дополнительно требует Allow-Credentials: true. Заголовок Authorization не равен режиму credentials.
Проверка preflight сопоставляет статус OPTIONS, Allow-Methods и Allow-Headers с нужным методом и именами. Отчёт называет конкретный отказ.
Показываются Expose-Headers и Vary: Origin. По единственному ответу нельзя утверждать, что сервер отражает любой Origin.
Клик отправляет GET без учётных данных с этой страницы. Даже HTTP 404 может быть доступен скрипту; при отказе fetch скрытый статус неизвестен.
Сервер может ответить, но браузер не передаст этот ответ JavaScript. Проверьте Allow-Origin фактического ответа и отдельно OPTIONS, если требовался предварительный запрос.
Простой GET уходит сразу, а затем проверяется возможность чтения ответа. JSON POST и пользовательские заголовки сначала требуют OPTIONS для Origin, метода и имён заголовков.
В локальном режиме вставленные данные не отправляются. Только после выбора браузерного GET и нажатия кнопки браузер запросит указанный URL без учётных данных.
Нет. CORS регулирует чтение ответов JavaScript в браузере, но не заменяет проверку полномочий и авторизацию на сервере. curl не применяет это браузерное ограничение.
С credentials: include сервер должен вернуть точный Origin и Allow-Credentials: true. Ответ с Allow-Origin: * браузер не откроет скрипту.
Нужен другой пример?
Скопируйте фактический ответ и при необходимости OPTIONS из DevTools. Проверка CORS разделит оба решения до изменения настроек сервера.
По умолчанию локально; сетевой GET — только после клика.