Я пытаюсь настроить Apache для работы в качестве прокси для удаленного сервера, чтобы разрешить междоменный AJAX с использованием CORS . Для этого мне нужно, чтобы Apache ответил на 2 HTTP-глагола, например:
ВАРИАНТЫ:
Ответьте на этот предварительный запрос CORS с помощью нескольких простых заголовков HTTP. Я имел в виду, что это может быть простой CGI-скрипт ( options.pl ).
POST:
Проксируйте все POST-запросы к удаленному серверу, но добавьте заголовок Access-Control-Allow-Origin "*", чтобы разрешить междоменный запрос.
Я могу выполнить оба эти требования независимо, но не могу настроить Apache для выполнения обоих. Проблема заключается в том, что при настройке ProxyPass и ProxyPassReverse запросы OPTIONS больше не попадают в сценарий CGI, они передаются на удаленный сервер.
Моя текущая конфигурация ниже. Я бы хотел решить эту проблему с помощью чисто веб-серверного решения, например Apache / Nginx (вместо запуска некоторого кода приложения), если это возможно.
<VirtualHost *:80>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
DocumentRoot /var/www
<Location "/">
# Disallow all verbs except OPTIONS and POST
order deny,allow
deny from all
# OPTIONS should be handled by a local CGI script
<Limit OPTIONS>
allow from all
Script OPTIONS /cgi-bin/options.pl
</Limit>
# POST requests are proxied to a remote server
<Limit POST>
allow from all
ProxyPass http://somewhere-else/
ProxyPassReverse http://somewhere-else/
Header add Access-Control-Allow-Origin "*"
</Limit>
</Location>
</VirtualHost>