Heim > Artikel > Betrieb und Instandhaltung > Leitfaden zur domänenübergreifenden Zugriffskonfiguration und CORS-Protokollunterstützung zum Einrichten des Nginx-Servers
Anleitung zur domänenübergreifenden Zugriffskonfiguration und CORS-Protokollunterstützung zum Erstellen von Nginx-Servern
Einführung:
In der aktuellen Webanwendungsentwicklung sind domänenübergreifende Anforderungen zu einer häufigen Anforderung geworden. Um die Sicherheit zu gewährleisten, beschränken Browser standardmäßig domänenübergreifende Vorgänge über AJAX-Anfragen. Das CORS-Protokoll (Cross-Origin Resource Sharing) bietet Entwicklern eine zuverlässige Lösung, um eine kontrollierbare Autorisierung des domänenübergreifenden Zugriffs zu erreichen.
Nginx ist ein Hochleistungs-Webserver und Reverse-Proxy-Server. In diesem Artikel wird erläutert, wie Sie mit Nginx die domänenübergreifende Zugriffskonfiguration des Servers und die CORS-Protokollunterstützung erstellen.
http { ... # 允许跨域访问 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header Access-Control-Expose-Headers 'Content-Length,Content-Range'; }
Die obige Konfiguration ermöglicht den Zugriff von allen Domänennamen (*) und unterstützt GET, POST und OPTIONS Methoden. Gleichzeitig geben wir auch einige allgemeine Informationen zum Anforderungsheader an.
Laden Sie nach dem Speichern und Beenden der Konfigurationsdatei die Nginx-Konfiguration neu, um sie wirksam zu machen:
$ sudo nginx -s reload
http { ... # 配置CORS map $http_origin $allowed_origin { default ""; ~^https?://(www.)?example.com$ $http_origin; ~^https?://(www.)?example.net$ $http_origin; } server { ... location / { if ($allowed_origin != "") { add_header 'Access-Control-Allow-Origin' $allowed_origin; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; } ... } } }
In der obigen Konfiguration verwenden wir die map
-Direktive, um einen $allowed_origin
zu definieren > Variable, die zum Speichern von Domänennamen verwendet wird, die einen domänenübergreifenden Zugriff ermöglichen. location /
wird im server
-Block konfiguriert und die if
-Direktive wird verwendet, um zu bestimmen, ob sich der Domänenname der aktuellen Anforderungsquelle im befindet erlaubte Liste. Wenn ja, fügen Sie die entsprechenden CORS-Header-Informationen hinzu. Darüber hinaus können wir je nach Bedarf weitere Regeln hinzufügen. map
指令来定义一个$allowed_origin
变量,用于存储允许跨域访问的域名。在server
块中配置了location /
,并通过if
指令判断当前请求来源的域名是否在允许列表中。如果是,则添加相应的CORS头信息。此外,我们也可以根据自己的需要添加更多的规则。
为了支持预检请求,我们只需要在location /
In einigen Fällen erfordern domänenübergreifende Anfragen Preflight-Vorgänge. Zum Beispiel, wenn benutzerdefinierte Anfrage-Header-Informationen oder nicht einfache Anfragen (wie PUT, DELETE usw.) verwendet werden. Eine Preflight-Anfrage ist eine OPTIONS-Anfrage, die vor der eigentlichen Anfrage gesendet wird, um die Autorisierung des Servers für die eigentliche Anfrage zu erhalten.
Um Preflight-Anfragen zu unterstützen, müssen wir nur die folgende Konfiguration im location/
-Block hinzufügen:
location / { ... if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' $allowed_origin; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; return 204; } ... }
In der obigen Konfiguration geben wir 204 zurück, wenn die Anfragemethode OPTIONS ist ( Kein Inhalt) und fügen Sie CORS-Header-Informationen hinzu.
Das obige ist der detaillierte Inhalt vonLeitfaden zur domänenübergreifenden Zugriffskonfiguration und CORS-Protokollunterstützung zum Einrichten des Nginx-Servers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!