Wakanda Server CORS с HTTPS-соединениями

У меня есть обработчик запроса, настроенный следующим образом:

httpServer.addRequestHandler("^/send-contact-message", "./rest-extensions/contact-messages.js", "sendContactMessage");

У меня настроен CORS следующим образом:

<cors enabled="true">
    <domain name="imagesreimagined.com" methods="post"/>
</cors>

Мой сервер настроен с безопасными соединениями (HTTPS), установленными на Accept only HTTPS from remote & allow HTTP and HTTPS from localhost. Если я отправлю запрос из формы с action="https://imagesreimagined.store/send-contact-message", я получаю сообщение об ошибке в браузере:

XMLHttpRequest не может загрузить https://imagesreimagined.store/send-contact-message. Источник http://imagesreimagined.com не разрешен Access-Control-Allow-Origin.

Если я установлю безопасные соединения своего сервера (HTTPS) на Accept both HTTP and HTTPS connections и изменю действие формы на http, это сработает. Однако мне нужно, чтобы все удаленные соединения были https.

Я также попробовал CORS с портом 443 и получил ту же ошибку.

<cors enabled="true">
    <domain name="imagesreimagined.com:443” methods="post"/>
</cors>

Сервер, вызывающий сервер Ваканды, не использует SSL, если это имеет значение.


person Jeff G    schedule 01.08.2017    source источник
comment
Ваш URL https://imagesreimagined.store, зачем добавлять imagesreimagined.com в CORS, а не imagesreimagined.store?   -  person Yann    schedule 02.08.2017
comment
@Yann imagesreimagined.store — это домен сервера, на котором работает Wakanda Server. imagesreimagined.com — это домен веб-сайта, не относящегося к Ваканде, который обращается к серверу Ваканды.   -  person Jeff G    schedule 02.08.2017
comment
Вы точно определили <form method="post"> ? get — это значение по умолчанию для формы. Вы также можете попробовать добавить POST;GET в свои настройки CORS.   -  person Yann    schedule 03.08.2017
comment
@ Янн Да. method="post".   -  person Jeff G    schedule 03.08.2017
comment
Это потрясающе. Я вошел в SO сегодня утром, чтобы задать тот же самый вопрос. Моя установка очень похожа.   -  person Chris Curnow    schedule 29.08.2017


Ответы (2)


Как только я удалил номер порта из доменного имени cors и добавил SSL на сервер, на котором размещается веб-сайт, размещающий сообщения на сервере Wakanda, все заработало.

person Jeff G    schedule 03.08.2017

Думаю, это не ответ, а скорее дополнение к вопросу в надежде, что это поможет.

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

Мой сервер Wakanda настроен на прием только SSL-соединений и настроен на Accept only HTTPS from remote & allow HTTP and HTTPS from localhost. Сервер Ваканды опубликован на порту 8443.

На той же машине у меня есть сервер Apache, работающий на порту 80, который публикует мое приложение Angular 2.

Я потратил несколько часов, пытаясь заставить CORS работать, но безуспешно. Я еще не пробовал запускать приложение Angular на SSL, но похоже, что стоит попробовать.

=====================

После дальнейшего изучения я нашел проблему.

Не включайте протокол в определение CORS.

ie:

Вместо

<domain name="http://app.example.com" methods="post;get;put;delete"/>

Так должно быть:

<domain name="app.example.com" methods="post;get;put;delete"/>

Довольно очевидный действительно, но я не видел это в течение долгого времени.

person Chris Curnow    schedule 29.08.2017