Заголовки CORS, не добавленные в Apache

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

Мы выполняем AS/400 с установкой Apache для развертывания сервисов REST. Я не знаю многих технических деталей, но информационных отчетов "Apache server <servername> - Apache/2.4.2 (IBM i)".

Проблемой является CORS: при использовании ПОМЕЩЕНИЯ/УДАЛЕНИЯ запрос ОПЦИЙ перед полетом, отправляют к серверу. Ответ возвращает a 200 OK, но не возвращает заголовок CORS как Access-Control-Allow-Origin *. Из-за этого (я принимаю) не выполняется реальный запрос, и браузер возвращает ошибку CORS:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

Веб-сервисы настроены для возврата этого заголовка, но это не возможно к возвратам это для запроса ОПЦИЙ.

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

Мой httpd.conf:

LoadModule mod_ibm_lwi /QSYS.LIB/QHTTPSVR.LIB/QLWIIHSMOD.SRVPGM
HotBackup Off
KeepAlive Off
DocumentRoot /www/WS_REST_BE/htdocs
AddLanguage en .en
LogMaint logs/error_log 7 0
LogFormat "%h %T %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Listen *:10043
<Location />
  AllowOverride All
  Require all granted
Header set Access-Control-Allow-Origin "*"
</Location>
LoadModule was_ap20_module /QSYS.LIB/QHTTPSVR.LIB/QSVTAP24.SRVPGM
WebSpherePluginConfig /www/WS_REST_BE/conf/ias-plugin-cfg.xml
<LwiProfile WS_REST_BE>
  LwiAssignUserID WEBSBEPRD
  LwiAutostartOption StartEnd
  LwiStartJobQueue QHTTPSVR/QZHBHTTP HTTPWWW
</LwiProfile>
AddCharset UTF-8 .html .js
AddDefaultCharset utf-8

Я уже попытался установить заголовок в различных местах в конфигурации, но это просто не работает. В документации IBM ясно говорится, что mod_headers поддерживается (и это должно быть включено).

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

Примечание: если я должен предоставить больше информации, не стесняйтесь спрашивать!

3
задан 22 July 2015 в 10:00
2 ответа

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

Отсутствует заголовок Access-Control-Allow-Origin в запрошенном resource.

, который ссылается на запрос POST / DELETE afaik. Попробуйте добавить заголовки CORS к ответам POST / DELETE.

См. Ссылку: http://www.developerscrappad.com/1781/java/java-ee/rest-jax-rs/java-ee-7-jax-rs-2-0-cors- on-rest-how-to-make-rest-apis-available-from-a-different-domain

Насколько я понимаю, проблема должна быть не в Apache, а в службах REST. См. Также: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing#How_CORS_works

0
ответ дан 3 December 2019 в 08:08

Хорошо, это предположение, но:

У вас есть директива Header внутри ... . Когда клиент отправляет предварительный запрос, он использует метод HTTP OPTIONS. Поскольку OPTIONS не запрашивает какой-либо конкретный ресурс, директива Location может не активироваться.

Попробуйте переместить директиву Header за пределы Location.

0
ответ дан 27 March 2021 в 14:20

Теги

Похожие вопросы