So verwenden Sie Nginx, um domänenübergreifende Front-End-Probleme zu lösen

So verwenden Sie Nginx, um domänenübergreifende Front-End-Probleme zu lösen

Vorwort

Bei der Entwicklung statischer Seiten, wie etwa Vue-Anwendungen, rufen wir häufig einige Schnittstellen auf, die wahrscheinlich domänenübergreifend sind. Anschließend meldet der Browser ein Cross-Origin-Problem und verweigert den Aufruf.

Die einfachste Lösung besteht darin, den Browser so einzustellen, dass Sicherheitsprobleme ignoriert werden und --disable-web-security festzulegen. Diese Methode eignet sich zwar gut für die Entwicklung von PC-Seiten, funktioniert jedoch nicht für mobile Seiten.

Lösung

Verwenden Sie Nginx, um Anfragen weiterzuleiten. Schreiben Sie die domänenübergreifende Schnittstelle, um die lokale Domänenschnittstelle aufzurufen, und leiten Sie diese Schnittstellen dann an die tatsächliche Anforderungsadresse weiter.

Zum Beispiel

Beispielsweise entwickeln wir eine Vue-Anwendung.

Original:

Die Debug-Seite ist: http://192.168.1.100:8080/

Die angeforderte Schnittstelle ist: http://ni.hao.sao/api/get/info

Schritt 1:

Die angeforderte Schnittstelle ist: http://192.168.1.100:8080/api/get/info

PS: Dies löst das domänenübergreifende Problem.

Schritt 2:

Gehen Sie nach der Installation von Nginx zum Verzeichnis /usr/local/etc/nginx/ (dies ist für Mac) und ändern Sie die Datei nginx.conf.

Schritt 3:

Kommentieren Sie die Standardserverkonfiguration aus.

Fügen Sie unten hinzu:

  Server{
    hören Sie 8888;
    Servername 192.168.1.100;
 
    Standort /{
      Proxy-Passwort http://192.168.1.100:8080;
    }
 
    Standort /api{
      Proxy-Passwort http://ni.hao.sao/api;
    }
  }

Nach dem Speichern starten Sie Nginx.

PS: Sie müssen nicht viel über die Nginx-Konfiguration wissen, es ist ganz einfach.

Schritt 4:

Besuchen Sie: http://192.168.1.100:8888/

Erledigt.

PS: Beachten Sie, dass der Zugriffsport „8888“ ist. Wenn Sie Adressen in anderen Domänen haben, fügen Sie einfach weiterhin Standorte hinzu.

Fehlerdemonstration

Ich habe die Nginx-Konfiguration zunächst nicht ganz verstanden und dachte, ich könnte sie wie folgt konfigurieren.

  Server{
    hören Sie 8080;
    Servername 192.168.1.100;
 
    Standort /api{
      Proxy-Passwort http://ni.hao.sao/api;
    }
  }

Der Grund, warum ich das geschrieben habe, ist, dass ich dachte, dadurch könnte Nginx mir dabei helfen, auf Anfragen auf 8080 zu lauschen und dann nur passende Anfragen weiterzuleiten. Was mir nicht klar war ist, dass Nginx, nachdem es auf diese Weise geschrieben wurde, Port 8080 belegen müsste.

Da der Port belegt sein muss, kann er nicht von anderen Prozessen desselben Protokolls belegt werden, was dazu führt, dass die entwickelte Seite mit Port 8080 nicht aktiviert werden kann. Erst als mich ein Kollege darauf aufmerksam machte, fiel mir die Sache wieder ein. Ich änderte meine Meinung und kam auf die obige Methode.

Zusammenfassen

Tatsächlich kann dies nicht nur während der Entwicklung und Fehlerbehebung, sondern auch in einer Produktionsumgebung erfolgen. Nachdem Sie Nginx zum Weiterleiten von Anforderungen verwendet haben, müssen die bereitzustellenden statischen Seiten nicht in derselben Domäne wie die Anforderungsschnittstelle platziert werden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der für das Front-End erforderlichen Nginx-Konfiguration
  • Nginx-Konfiguration für die Front-End-Entwicklung (Szenario)
  • Detaillierte Erläuterung der Nginx-Frontend-Verteilungsmethode basierend auf $remote_addr
  • Mehrere Methoden zum Bereitstellen mehrerer Front-End-Projekte mit nginx
  • Detaillierte Erklärung, wie Nginx das Problem des domänenübergreifenden Zugriffs auf Front-End-Ressourcen löst
  • Detaillierte Erklärung, was nginx auf dem Frontend leisten kann

<<:  MySQL ersetzt das Zeitfeld (Jahr, Monat, Tag) durch unveränderte Stunden, Minuten und Sekunden. Beispielanalyse

>>:  Detaillierte Erläuterung der Grundkenntnisse zur Front-End-Komponentenbildung

Artikel empfehlen

Einführung und Verwendung von Triggern und Cursorn in MySQL

Trigger-Einführung Ein Trigger ist eine spezielle...

So bedienen Sie JSON-Felder in MySQL

MySQL 5.7.8 führte das JSON-Feld ein. Dieser Feld...

Eine kurze Analyse von Event Bubbling und Event Capture in js

Inhaltsverzeichnis 01-Ereignisse brodeln 1.1- Ein...

Implementierung von zwei Basis-Images für die Docker-Bereitstellung von Go

1. golang:neuestes Basis-Image mkdir gotest Berüh...

Memcached-Methode zum Erstellen eines Cache-Servers

Vorwort Viele Webanwendungen speichern Daten in e...

Vue hält den Benutzer angemeldet (verschiedene Token-Speichermethoden)

Inhaltsverzeichnis So setzen Sie Cookies Nachteil...

Keep-Alive-Multilevel-Routing-Cache-Problem in Vue

Inhaltsverzeichnis 1. Problembeschreibung 2. Ursa...

Detaillierte Erläuterung der MySQL-Hochverfügbarkeitsarchitektur

Inhaltsverzeichnis Einführung MySQL-Hochverfügbar...

Natives JS zur Implementierung einer Echtzeituhr

Teilen Sie einen Echtzeituhreffekt, der mit nativ...

Details zur MySQL-Transaktionsisolationsebene

serializable Serialisierung (kein Problem) Transa...

Umfassende Website-Bewertungslösung

<br />Manchmal werden Ihnen möglicherweise F...