Назад | Перейти на главную страницу

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

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

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

Проблема в CORS: при использовании PUT / DELETE на сервер отправляется предварительный запрос OPTIONS. Ответ возвращает 200 OK, но не возвращает заголовок CORS, например Access-Control-Allow-Origin *. Из-за этого (я предполагаю) реальный запрос не выполняется, и браузер возвращает ошибку CORS:

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

Веб-службы настроены на возврат этого заголовка, но невозможно вернуть его для запроса OPTIONS.

Я пытался настроить 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 поддерживается (и он должен быть включен).

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

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

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

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

, который ссылается на запрос 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-доступный-из-другого-домена

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