Ответ на предварительную проверку происходит только для приложения/json

Я пытался сделать почтовый запрос от angular 5 до моего бэкэнда spring mvc. Однако я получаю сообщение об ошибке Response for preflight is inavlid (redirect). Я искал решение с 4 дней, но безуспешно. Я пробовал все предложения по настройке заголовков типа контента. При этом я наблюдаю одну необычную вещь. Ошибка предварительной проверки возникает только тогда, когда я устанавливаю для заголовка типа содержимого значение application/json. Если я установил заголовок в текстовый/обычный, ошибка предварительной проверки исчезла, но отображается ошибка 415 неподдерживаемого типа носителя. Я действительно копал вещи, чтобы получить некоторую помощь. Любая помощь или предложения очень ценятся.


person Shreyas Sule    schedule 04.09.2018    source источник


Ответы (2)


Используя хром, посмотрите инструменты разработчика - консоль и посмотрите точную ошибку.

Ваша служба неправильно настраивает предварительный ответ для вашего запроса OPTIONS.

Как я могу проверить, готов ли мой сервис к CORS

  1. используйте PostMan или RestClient и сделайте запрос OPTIONS ни с чем (без аутентификации, без ничего)
  2. Найдите заголовки ответа для запроса OPTIONS из шага 1.
  3. Заголовки ответов могут выглядеть так

Access-Control-Allow-Origin: http://exampledomain.comg

Access-Control-Allow-Methods: GET, POST (или любые методы, которые вы хотите разрешить)

Access-Control-Allow-Headers: Content-Type

person Jayesh    schedule 05.09.2018
comment
если я изменю тип содержимого на текстовый/обычный, ошибки предварительной проверки можно избежать, но тогда мне придется иметь дело с неподдерживаемым типом носителя 415. - person Shreyas Sule; 05.09.2018
comment
вы владелец сервиса? Если нет, вам нужно будет связаться с ними - person Jayesh; 05.09.2018
comment
Вы можете видеть тип контента в разрешающих заголовках в ответе на параметры? - person Jayesh; 05.09.2018
comment
Я попытался выполнить почтовый запрос через Postman, установив заголовок авторизации на NTLM и передав объект с запросом, и он вернулся со статусом 200 ok. Итак, я думаю, что авторизация вызывает проблему. Теперь мне просто интересно, как я могу добавить тот же заголовок авторизации с NTLM через angular и передать его на серверную часть, чтобы успешно выполнить почтовый запрос. - person Shreyas Sule; 05.09.2018
comment
Я вижу тип контента как application/json в ответ - person Shreyas Sule; 05.09.2018

Добавьте аннотацию crossOrigin на свой контроллер. Если у вас есть несколько контроллеров, добавьте их на все контроллеры

@CrossOrigin(origins = "*")
@RestController
person harkesh kumar    schedule 05.09.2018