Lösung für den Apache-Cross-Domain-Ressourcenzugriffsfehler

Lösung für den Apache-Cross-Domain-Ressourcenzugriffsfehler

In vielen Fällen platzieren große und mittelgroße Websites statische Ressourcen (wie Schriftdateien, Bilder usw.) auf unabhängigen Servern oder CDNs und verwenden unabhängige Ressourcendomänennamen (wie res.test.com), um statische Ressourcen zu verteilen, den Zugriff zu beschleunigen und den Druck auf die Hauptseite zu verringern.

Bei der tatsächlichen Bereitstellung werden Sie jedoch feststellen, dass der Browser keine Ressourcen von diesen unterschiedlichen Domänennamen laden kann und die Firefox-Konsole einen Fehler meldet:

<span role="presentation" class="objectBox objectBox-errorMessage "><span class="errorMessage ">Cross-Origin-Anfrage blockiert: Die Same Origin Policy verbietet das Lesen der Remote-Ressource unter http://xxxxx. (Grund: Im CORS-Header „Access-Control-Allow-Origin“ fehlt). </span></span>

Cross-Origin-Anfrage blockiert: Die Same Origin Policy verbietet das Lesen der Remote-Ressource unter http://xxxxx. (Grund: CORS-Anforderung fehlgeschlagen).

Dies liegt daran, dass moderne Browser es als Cross-Origin-Ressource definieren und das Laden nicht zulassen.

Um Cross-Domain zu verstehen, müssen Sie zunächst die Same-Origin-Policy verstehen. Die Same-Origin-Policy ist eine sehr wichtige Sicherheitsrichtlinie, die aus Sicherheitsgründen in Browsern implementiert wird.

Was ist Homologie?

Eine URL besteht aus einem Protokoll, einem Domänennamen, einem Port und einem Pfad. Wenn zwei URLs dasselbe Protokoll, denselben Domänennamen und denselben Port haben, haben sie denselben Ursprung.

Same-Origin-Policy:

Die Same-Origin-Policy des Browsers verhindert, dass „Dokumente“ oder Skripte unterschiedlicher Herkunft bestimmte Eigenschaften des aktuellen „Dokuments“ lesen oder festlegen. (White Hat spricht über Web-Sicherheit[1])
Aus einer Domäne geladene Skripte dürfen nicht auf Dokumenteigenschaften einer anderen Domäne zugreifen.

Der Schlüssel ist also, wie man es löst. Tatsächlich ist es sehr einfach. Fügen Sie einfach eine Header-Information auf dem statischen Ressourcenserver hinzu:

Zugriffskontrolle-Ursprung zulassen *

Dieser Artikel verwendet Apache für den Betrieb, nginx ist ähnlich

Bearbeiten Sie zuerst httpd.conf

Finden Sie diese Zeile

#LoadModule headers_module modules/mod_headers.so

Entfernen Sie das Kommentarzeichen #

LoadModule headers_module modules/mod_headers.so

Der Zweck besteht darin, das benutzerdefinierte Modul „Apache-Headerinformationen“ zu aktivieren

Fügen Sie dann eine Zeile zum virtuellen Host des unabhängigen Ressourcendomänennamens hinzu

Header set Access-Control-Allow-Origin *

Dies bedeutet, dass beim Zugriff auf Ressourcen unter diesem Domänennamen ein Header hinzugefügt wird.

Starten Sie Apache neu

Kommen Sie noch einmal vorbei, ok!

NameVirtualHost 10.0.0.2:80
<VirtualHost 10.0.0.2:80>
  Dokumentstammverzeichnis /var/www/host.example.com
  Servername host.example.com
  JkMount /webapp/* jkworker
  Header-Satz Access-Control-Allow-Origin "*"
  RewriteEngine ein
  RewriteRule ^/andererhost http://andererhost.example.com/webapp [R,L]
</VirtualHost>

Und hier ist ein Beispiel der Apache-Konfiguration für das zweite:

NameVirtualHost 10.0.1.2:80
<VirtualHost 10.0.1.2:80>
  DocumentRoot /var/www/otherhost.example.com
  Servername otherhost.example.com
  JkMount /webapp/* jkworker
  Header-Satz Access-Control-Allow-Origin "*"
</VirtualHost>

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 des Vorgangs zum Aktivieren des Cross-Domain-Modus in PHP Apache
  • Detaillierte Erläuterung zur Lösung des Problems des domänenübergreifenden Zugriffs auf statische Nginx/Apache-Ressourcen
  • So konfigurieren Sie den Apache-Server für domänenübergreifende Anforderungen
  • Apache-Konfiguration unterstützt CORS (Cross-Origin Resource Sharing)-Beispiel
  • Detaillierte Erläuterung der Fallstricke bei der Konfiguration von Apache-Domänennamen
  • Detaillierte Beschreibung und Anwendungsbeispiele der Apache Commons-Toolklassen in der häufig verwendeten Klassenbibliothek von Java
  • Lösen Sie das Problem der Groß- und Kleinschreibung der Linux+Apache-Server-URL
  • Vollständiges Tutorial zur Installation von Apache, MySQL, PHP, LAMP auf Ubuntu 18.04

<<:  Detaillierte Erläuterung des grundlegenden Falls des React.js-Frameworks Redux

>>:  Zusammenfassung der MySQL-Indexkenntnisse

Artikel empfehlen

Fallstudie: Ajax responseText analysiert JSON-Daten

Lösen Sie das Problem, dass der vom Server nach d...

Document Object Model (DOM) in JavaScript

Inhaltsverzeichnis 1. Was ist DOM 2. Elemente aus...

So installieren Sie Jenkins auf CentOS 8

Um Jenkins auf CentOS 8 zu installieren, müssen S...

Detaillierte Schritte zum Löschen von Umgebungsvariablen in Linux

Wie lösche ich Umgebungsvariablen unter Linux? Ve...

Kapseln Sie die Navigationsleistenkomponente mit Vue

Vorwort: Die vollständige Kapselung eines Funktio...

Detaillierte Erklärung zur Verwendung mehrerer Timer in CocosCreator

1. setTimeOut Drucken Sie abc nach 3 Sekunden. Nu...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

So unterstreichen Sie das A-Tag und ändern die Farbe vor und nach dem Klicken

Code kopieren Der Code lautet wie folgt: ein:link...

Eine kurze Analyse der Verwendung der Zero-Copy-Technologie in Linux

In diesem Artikel werden mehrere wichtige Zero-Co...

So bringen Sie Ihren Browser dazu, mit JavaScript zu sprechen

Inhaltsverzeichnis 1. Das einfachste Beispiel 2. ...

Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

Inhaltsverzeichnis 1. Kommentare zu MySQL-Primärs...