CORS (Cross-Origin Resource Sharing) — это механизм безопасности, который позволяет или запрещает веб-клиентам (обычно браузерам) делать запросы к ресурсам на других доменах. Проблема CORS может возникнуть, когда вы пытаетесь использовать API, созданное с помощью библиотеки MARS-Curiosity для Delphi, в клиентском JavaScript-коде, который выполняется в браузере.
Описание проблемы
При использовании MARS-Curiosity Delphi REST Library для создания простого API с POST-эндпоинтом, вы можете столкнуться с ситуацией, когда ваш API работает корректно в Postman, но при попытке обращения к нему из JavaScript-кода возникает ошибка CORS. Ошибка указывает на то, что запрашиваемый ресурс не содержит заголовка Access-Control-Allow-Origin, который необходим для разрешения кросс-доменных запросов.
Решение заключается в активации CORS для вашего MARS API. В корневой директории проекта, где находится исполняемый файл, должен быть расположен файл конфигурации .ini с таким же именем, как и у исполняемого файла. В этом файле необходимо убедиться, что следующие параметры установлены для активации CORS:
Если вы используете шаблон, который идет в комплекте с библиотекой MARS, то эти строки уже должны быть в вашем .ini файле, но закомментированы. Вам нужно будет просто убрать символ комментария (точку и разделитель ;) для активации настроек CORS.
Пример активации CORS в файле конфигурации .ini
;CORS.Enabled=True - Уберите точку и разделитель для активации
;CORS.Origin=* - Уберите точку и разделитель для активации
;CORS.Methods=HEAD,GET,PUT,POST,DELETE,OPTIONS - Уберите точку и разделитель для активации
;CORS.Headers=X-Requested-With,Content-Type,Authorization - Уберите точку и разделитель для активации
После того, как вы внесли необходимые изменения в файл конфигурации, перезапустите ваше приложение, и проблема с CORS должна быть решена.
Важные замечания
Установка CORS.Origin=* разрешает все домены. Это может быть рискованно для продакшена, так как увеличивает вероятность неавторизованного доступа. В продакшене следует указать конкретные домены, которым разрешено обращаться к вашему API.
Убедитесь, что вы перезапустили ваше приложение после внесения изменений в файл конфигурации.
Следуя этим инструкциям, вы сможете успешно разрешить проблему CORS и использовать MARS REST API в Delphi из JavaScript-кода.
Проблема заключается в настройке CORS для MARS REST API в Delphi, чтобы разрешить доступ к API из JavaScript-кода, выполненного в браузере.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.