Apache/Nginx: proxy-POST-Anfragen an remote-server, handle OPTIONEN Anfragen lokal

Ich versuche, Apache zu konfigurieren, die als proxy für ein remote-server, um einen cross-domain-AJAX mit CORS. Um dies zu erreichen, brauche ich Apache, um zu reagieren 2-HTTP-Verben wie so:

  1. OPTIONEN:
    Antworten zu diesem CORS 'pre-flight' - Anfrage mit einigen einfachen HTTP-Header. Ich hatte im Hinterkopf, dass dies ein einfaches CGI-Skript (options.pl).

  2. POST:
    Proxy-alle POST-requests an den remote-server, sondern fügen Sie die Access-Control-Allow-Origin " * " - header zu ermöglichen, der cross-domain-Anfrage geschehen.

Kann ich erreichen beide Anforderungen sind unabhängig, aber ich kann nicht konfigurieren, Apache, beides zu tun. Das problem ist, dass, wenn Sie die ProxyPass und ProxyPassReverse konfiguriert ist, wird das OPTIONEN-Anforderungen nicht mehr treffen, die dem CGI-Skript, werden Sie umgeleitet, um den remote-server.

Meine aktuelle config ist unten. Ich möchte lösen diese mit einer reinen web-server-Lösung wie z.B. Apache/Nginx (statt laufen einige Anwendung code), wenn möglich.

<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>
InformationsquelleAutor zefer | 2011-02-14
Schreibe einen Kommentar