Конфигурация корса с верблюдом

У меня есть запрос AJAX к моему Rest Webservice с настраиваемым заголовком "login".

Вот моя остальная конфигурация:

restConfiguration()
.component("netty4-http")
.bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.enableCORS(true)
.corsAllowCredentials(true)
.corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, login")
.contextPath(contextPath).host(host).port(port);

Я получаю ответ 200 на предварительный запрос OPTIONS, но заголовок «login» не является заголовком Access-Control-Allow-Headers, и мой браузер никогда не отправляет фактический запрос.

Также я не делал никаких настроек в моем маршруте для корса.

Вот мои заголовки запросов

Пользовательский агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv: 58.0) Gecko / 20100101 Firefox / 58.0

Принять: text / html, application / xhtml + xml, application / xml; q = 0.9, /; q = 0.8

Accept-Language: fr, fr-FR; q = 0,8, en-US; q = 0,5, en; q = 0,3

Принятие кодировки: gzip, deflate

Метод-запроса-контроля доступа: ПОЛУЧИТЬ

Access-Control-Request-Headers: вход в систему

Источник: http://127.0.0.1:8081

DNT: 1

Подключение: keep-alive

И ответьте заголовки:

длина содержимого: 0

Принять: text / html, application / xhtml + xml, application / xml; q = 0.9, /; q = 0.8

Принятие кодировки: gzip, deflate

Accept-Language: fr, fr-FR; q = 0,8, en-US; q = 0,5, en; q = 0,3

Access-Control-Allow-Credentials: правда

Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers.

Доступ-Контроль-Разрешить-Методы: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH

Access-Control-Allow-Origin: http://127.0.0.1:8081

Максимальный возраст контроля доступа: 3600

Access-Control-Request-Headers: вход в систему

Метод-запроса-контроля доступа: ПОЛУЧИТЬ

breadcrumbId: ID-resitt-ws-1521624297667-0-6

DNT: 1

Источник: http://127.0.0.1:8081

Пользовательский агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv: 58.0) Gecko / 20100101 Firefox / 58.0

соединение: keep-alive (модифи)

Я чувствую, что моя конфигурация cors ничего не меняет в моей ситуации.


person Zeitoun    schedule 21.03.2018    source источник
comment
Какую версию Camel вы используете и пробовали ли вы последнюю версию   -  person Claus Ibsen    schedule 21.03.2018


Ответы (2)


Мы нашли ответ, .enableCORS(true) нужно поставить после строки .contextPath(contextPath).host(host).port(port).

нравится

restConfiguration()
.component("netty4-http")
.bindingMode(RestBindingMode.json)
.dataFormatProperty("prettyPrint", "true")
.contextPath(contextPath).host(host).port(port)
.enableCORS(true)
.corsAllowCredentials(true)
.corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, login");
person Zeitoun    schedule 21.03.2018

В моем случае заголовки CORS не были в HTTP-ответе, когда верблюд выдал исключение и вернул ошибку 500.

person raisercostin    schedule 12.07.2020