Проблема с заголовками CORS в приложении Ionic Browser

У меня есть REST API, реализованный в Grails с использованием профиля rest-api. В методе findProfile я возвращаю заголовки CORS, необходимые Ionic для прохождения проверок CORS. Я развернул приложение на Apache2, и URL-адрес REST API НЕ проходит через Ionic Proxy. Вчера моя служба API не вернула заголовки CORS, и это привело к сбою. Я исправил проблему, и она работает, если я тестирую приложение с помощью ionic serve и меняю URL-адреса для прохождения через прокси. Но когда я пытаюсь получить доступ к той же функции в развернутом приложении Apache2, я не получаю обратно заголовки CORS, как будто что-то было кэшировано. Очень странно. Есть идеи, почему это могло происходить?

Еще несколько деталей: Приложение ionic и REST API развернуты на одном хосте.

Я понимаю, что CORS является проблемой только при локальном тестировании приложения с помощью ионной подачи или ионного запуска. Я также понимаю, что прокси применимы только в вышеупомянутой ситуации.

Я вызываю другие функции из того же REST API, и у них нет проблем.

Пожалуйста, дайте мне знать, какой дополнительной информацией вы можете мне поделиться, чтобы помочь вам разобраться в проблеме и получить ответ.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
79
1

Ответы 1

Я нашел источник своей проблемы.

Для всех запросов с типом содержимого, отличным от application / json, предполетный запрос CORS не выдавался, поэтому сбоев не было, потому что сервер с радостью принял запрос.

С другой стороны, когда был отправлен запрос с типом содержимого application / json, предполетный запрос CORS с методом OPTIONS был отправлен на сервер до исходного запроса POST. Поскольку в моем приложении Grails REST API не был включен CORS, предполетный запрос не выполнялся. Не было сбоев при прохождении через прокси, потому что предполетный запрос не генерируется при прохождении через прокси. Вот почему при локальном тестировании он работал нормально.

На всякий случай вам интересно, как включить поддержку CORS в Grails 3.2.11. Вот как:

В файле application.yml в самом верху (не уверен, имеет ли это значение, возможно, нет, но я добавил его вверху) добавьте следующее:

Прямо под тегом grails: (см. Ниже)

грааль: корс: включен: правда

Это делает его широко открытым, но вы можете затянуть его по мере необходимости. Для получения дополнительной информации перейдите по этой ссылке:

http://docs.grails.org/3.2.11/guide/single.html#whatsNewCors

Восстановил мою автономную WAR, развернул ее и вуаля. Работает как шарм.

Надеюсь, это поможет людям, имеющим те же проблемы, что и я.

Другие вопросы по теме