Frage Zulassen von Kreuzherkunftsanforderungen (CORS) auf Nginx für 404 Antworten


Ich benutze Nginx, um statische Dateien als Reaktion auf CORS-Anfragen mit der in diese Frage. Wenn die Datei jedoch nicht vorhanden ist, enthält die 404-Antwort nicht die Access-Control-Allow-Origin: * Header und so ist Block durch den Browser.

Wie kann ich senden? Access-Control-Allow-Origin: * auf 404 Antworten?


21
2018-05-29 09:15


Ursprung




Antworten:


Obwohl dies vor langer Zeit gefragt wurde, kompilierte ich Nginx mit mehr Modul, aber mit neueren Version von Nginx, ich fand, ich muss nicht kompilieren Nginx, alles, was ich brauchte, war hinzuzufügen always Richtlinie.

http://nginx.org/en/docs/http/ngx_http_headers_module.html

Syntax: add_header name value [always];

Wenn der Parameter always angegeben ist (1.7.5), wird das Header-Feld unabhängig vom Antwortcode hinzugefügt.

Also eine gestimmte Version von CORS Kopfzeilen:

            if ($cors = "trueget") {
                    # Tells the browser this origin may make cross-origin requests
                    # (Here, we echo the requesting origin, which matched the whitelist.)
                    add_header 'Access-Control-Allow-Origin' "$http_origin" always;

                    # Tells the browser it may show the response, when XmlHttpRequest.withCredentials=true.
                    add_header 'Access-Control-Allow-Credentials' 'true' always;
            }

29
2018-06-22 11:37



always war der Schlüssel. Danke, dass du mich darauf hingewiesen hast, ich wurde verrückt! - bgondy


Ich gehe davon aus, dass du gerade benutzt add_header Richtlinie. Die Dokumentation stellt fest, dass dies nur den Header für den Statuscode 200, 204, 301, 302 und 304 festlegt. Um die Kopfzeile für 404 Statuscodes festzulegen, müssen Sie die more_set_headers Richtlinie von der headers_mehr Modul (Sie müssen möglicherweise nginx neu kompilieren, um dieses Modul zu erhalten). Folgendes würde den Header für alle Statuscodes setzen:

more_set_headers 'Access-Control-Allow-Origin: *';

Sie können es auch auf bestimmte Statuscodes beschränken:

more_set_headers -s '404' 'Access-Control-Allow-Origin: *';

8
2018-05-29 23:05