Bei der Netzwerkprogrammierung waren domänenübergreifende Probleme schon immer ein Problem, auf das Entwickler häufig stoßen. Viele Menschen stoßen bei der Verwendung von PHP häufig auf Situationen, in denen auf PHP-Dateien nicht domänenübergreifend zugegriffen werden kann. Warum kann also nicht domänenübergreifend auf PHP-Dateien zugegriffen werden? Dieser Artikel gibt Ihnen eine ausführliche Antwort auf diese Frage.
Was ist zunächst einmal domänenübergreifender Zugriff?
Einfach ausgedrückt bedeutet domänenübergreifender Zugriff, dass sich der Domänenname der aktuell besuchten Seite vom Domänennamen der angeforderten Zielressource unterscheidet. Der Domänenname der aktuellen Seite lautet beispielsweise www.example.com und der Domänenname der Ressource, auf die zugegriffen werden muss, lautet api.example.com. Dies ist ein Fall von domänenübergreifendem Zugriff.
Warum gibt es ein domänenübergreifendes Zugriffsproblem?
Dies liegt hauptsächlich daran, dass der Browser aus Sicherheitsgründen standardmäßig den domänenübergreifenden Zugriff in JavaScript verbietet. Das heißt, wenn der aktuelle Domänenname vom Domänennamen der angeforderten Ressource abweicht, führt der Browser die Anfrage nicht aus.
Warum kann also nicht domänenübergreifend auf PHP-Dateien zugegriffen werden?
PHP-Datei ist eine serverseitige Skriptsprache, die auf dem Server ausgeführt wird, anstatt im Client-Browser ausgeführt zu werden. Daher unterliegen PHP-Dateien selbst nicht der Same-Origin-Richtlinie in JavaScript.
Wenn wir jedoch AJAX in einer PHP-Datei verwenden, um eine domänenübergreifende Anfrage zu senden, antwortet der Server auf die Anfrage und gibt die entsprechenden Daten an den Client zurück. Zu diesem Zeitpunkt fängt der Browser diese Anfrage jedoch ab, da er dies als unsicheren Vorgang ansieht und die Anfrage ablehnt.
Wie lässt sich also das Problem des domänenübergreifenden Zugriffs auf PHP-Dateien lösen?
Eine Lösung besteht darin, den Antwortheader auf der Serverseite festzulegen. Indem Sie den folgenden Code in Ihre PHP-Datei einfügen, können Sie den Browser anweisen, domänenübergreifenden Zugriff zuzulassen:
header('Access-Control-Allow-Origin: *');
Hier verwenden wir die Funktion header(), die zum Senden von HTTP-Antwortheadern an den Client verwendet wird. Unter diesen gibt der Parameter Access-Control-Allow-Origin den Domänennamen an, der auf die Ressource zugreifen darf, und * bedeutet, dass jeder Domänenname auf die Ressource zugreifen darf.
Natürlich ist diese Methode nicht die sicherste, da nach dieser Einstellung alle Domänennamen domänenübergreifend auf die Ressource zugreifen können, was möglicherweise einige potenzielle Sicherheitsrisiken mit sich bringt.
Eine andere Lösung besteht darin, einen domänenübergreifenden Zugriff über einen Proxyserver zu erreichen. Wir können im Client-Browser eine Anfrage an den Proxy-Server senden. Anschließend fordert der Proxy-Server die Zielressource an und gibt das Anforderungsergebnis an den Client-Browser zurück. Auf diese Weise können Sie die Richtlinieneinschränkungen des Browsers für denselben Ursprung umgehen und einen domänenübergreifenden Zugriff erreichen.
Zusammenfassung
Bei der PHP-Entwicklung stoßen wir auf das Problem, dass auf PHP-Dateien nicht domänenübergreifend zugegriffen werden kann, hauptsächlich aufgrund der Same-Origin-Richtlinie des Browsers. Dieses Problem kann gelöst werden, indem der Antwortheader serverseitig festgelegt wird oder ein Proxyserver verwendet wird. Selbstverständlich empfehlen wir bei Projekten mit hohen Sicherheitsanforderungen, das Problem nicht dadurch zu lösen, dass man einen möglichst domänenübergreifenden Zugriff ermöglicht, sondern andere sichere Methoden zu nutzen.
Das obige ist der detaillierte Inhalt vonWas passiert, wenn auf PHP-Dateien nicht domänenübergreifend zugegriffen werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!