Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man die Unterstützung von Cross-Origin Resource Sharing (CORS) über den Nginx-Proxyserver?

Wie implementiert man die Unterstützung von Cross-Origin Resource Sharing (CORS) über den Nginx-Proxyserver?

WBOY
WBOYOriginal
2023-09-06 10:34:452194Durchsuche

Wie implementiert man die Unterstützung von Cross-Origin Resource Sharing (CORS) über den Nginx-Proxyserver?

Wie implementiert man die Unterstützung von Cross-Origin Resource Sharing (CORS) über den Nginx-Proxyserver?

Einführung:
Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der es Servern ermöglicht, Zugriff auf bestimmte Ressourcen zu gewähren, wenn sie Anforderungen aus verschiedenen Quellen (Domänen, Protokolle oder Ports) verarbeiten. In praktischen Anwendungen ist es häufig erforderlich, eine Ressourcenfreigabe über den Nginx-Proxyserver zu erreichen. In diesem Artikel wird erläutert, wie CORS durch die Nginx-Konfiguration unterstützt wird.

Schritt 1: Nginx installieren und konfigurieren

1. Nginx installieren
Stellen Sie zunächst sicher, dass Nginx auf dem Server installiert ist. Wenn es nicht installiert ist, wählen Sie bitte die entsprechende Installationsmethode entsprechend dem Betriebssystem.

2. Nginx-Konfigurationsdatei bearbeiten
Verwenden Sie einen Texteditor, um die Nginx-Konfigurationsdatei zu öffnen, die sich normalerweise unter /etc/nginx/nginx.conf oder /etc/nginx/conf.d befindet /default .conf. /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf

3.添加CORS配置
在配置文件的server块中添加以下代码,以启用CORS支持:

location / {
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
    }
    if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    }
    if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    }
}

以上配置将允许任何来源的请求进行跨域访问,并允许常见的请求方法(GET、POST、OPTIONS)。'Access-Control-Allow-Headers'指定了允许的请求头,'Access-Control-Expose-Headers'指定了允许的响应头。

4.保存并重启Nginx
保存配置文件,并重启Nginx服务,使配置生效。可以使用以下命令来重启Nginx:

sudo service nginx restart

步骤二:测试CORS支持

为了验证CORS配置的有效性,我们可以使用浏览器的开发工具来查看请求和响应头信息。

1.打开浏览器开发工具
在浏览器中打开开发者工具(一般是按F12键),切换到"Network"(网络)选项卡。

2.发送跨域请求
通过JavaScript代码或者直接在浏览器地址栏输入一个跨域地址,发送跨域请求。例如,假设我们的Nginx代理服务器的地址为http://example.com,并且我们要访问的跨域URL为http://api.example.com/data

3.查看请求和响应头
在开发者工具的“Network”选项卡中,选中对应的请求,然后点击它以展开详细信息。可以在请求和响应的头部信息中找到Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers

3. CORS-Konfiguration hinzufügen

Fügen Sie den folgenden Code im server-Block der Konfigurationsdatei hinzu, um CORS-Unterstützung zu aktivieren:
rrreee

Die obige Konfiguration ermöglicht den domänenübergreifenden Zugriff für Anfragen von jedem Ursprung und Erlauben Sie gängige Anforderungsmethoden (GET, POST, OPTIONS). „Access-Control-Allow-Headers“ gibt die zulässigen Anforderungsheader an, und „Access-Control-Expose-Headers“ gibt die zulässigen Antwortheader an. 🎜🎜4. Speichern Sie Nginx und starten Sie es neu. Speichern Sie die Konfigurationsdatei und starten Sie den Nginx-Dienst neu, damit die Konfiguration wirksam wird. Sie können den folgenden Befehl verwenden, um Nginx neu zu starten: 🎜rrreee🎜Schritt 2: CORS-Unterstützung testen🎜🎜Um die Gültigkeit der CORS-Konfiguration zu überprüfen, können wir die Entwicklungstools des Browsers verwenden, um die Informationen zum Anforderungs- und Antwortheader anzuzeigen. 🎜🎜1. Öffnen Sie die Browser-Entwicklungstools 🎜Öffnen Sie die Entwicklertools im Browser (drücken Sie normalerweise die F12-Taste) und wechseln Sie zur Registerkarte „Netzwerk“. 🎜🎜2. Senden Sie domänenübergreifende Anfragen. Senden Sie domänenübergreifende Anfragen über JavaScript-Code oder geben Sie direkt eine domänenübergreifende Adresse in die Adressleiste des Browsers ein. Nehmen wir beispielsweise an, dass die Adresse unseres Nginx-Proxyservers http://example.com lautet und die domänenübergreifende URL, auf die wir zugreifen möchten, http://api.example ist. com/data. 🎜🎜3. Anforderungs- und Antwortheader anzeigen🎜Wählen Sie auf der Registerkarte „Netzwerk“ der Entwicklertools die entsprechende Anforderung aus und klicken Sie darauf, um die Details zu erweitern. Sie finden <code>Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Header und andere verwandte Header-Informationen zur Bestätigung der CORS-Unterstützung. 🎜🎜Zusammenfassung: 🎜Durch die Konfiguration von Nginx können wir problemlos CORS-Unterstützung (Cross-Domain Resource Sharing) implementieren. Fügen Sie einfach einige Header-Informationen zur Nginx-Konfigurationsdatei hinzu, damit der Nginx-Proxyserver CORS unterstützt. Dadurch wird sichergestellt, dass domänenübergreifende Anfragen zwischen verschiedenen Domänen ordnungsgemäß funktionieren. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man die Unterstützung von Cross-Origin Resource Sharing (CORS) über den Nginx-Proxyserver?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn