Heim >Backend-Entwicklung >PHP-Tutorial >Methode zur domänenübergreifenden Funktionsaktivierung von Laravel zur Instanzanalyse
Aus Sicherheitsgründen beschränken Browser ursprungsübergreifende Anfragen im Skript. Da XMLHttpRequest der Same-Origin-Richtlinie folgt, können alle Anwendungen, die XMLHttpRequest zum Erstellen von HTTP-Anforderungen verwenden, nur auf ihre eigenen Domänennamen zugreifen. Wenn sie domänenübergreifende Anforderungen erstellen müssen, müssen Entwickler mit dem Browser zusammenarbeiten, um einige Konfigurationen vorzunehmen, die eine Überkreuzung ermöglichen -Domain-Anfragen.
Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum Aktivieren domänenübergreifender Funktionen in Laravel ein. Er bietet einen gewissen Referenz-Lernwert für jedermann Ich hoffe, es kann allen helfen.
Die W3C-Anwendungsarbeitsgruppe empfahl einen ressourcenübergreifenden Mechanismus, der es Webanwendungsservern ermöglicht, eine standortübergreifende Zugriffskontrolle zu unterstützen und so eine sichere standortübergreifende Datenübertragung zu ermöglichen. Dieser Mechanismus nutzt mehrere Erweiterungen dieser Methode der ursprüngliche Modus:
An den Antwortheader sollte Access-Control-Allow-Orign angehängt werden, um anzugeben, welche Anforderungsquellen auf Ressourceninhalte zugreifen dürfen
Der Browser überprüft die Übereinstimmung zwischen der Anfragequelle und dem Wert in der Antwort
Bei domänenübergreifenden Anfragen sendet der Browser vorab eine nicht einfache Methode zur Bestimmung ob eine bestimmte Ressource bereit ist, domänenübergreifenden Ressourcenzugriff zu akzeptieren
Die Serveranwendung bestimmt, ob die Anforderung domänenübergreifend ist, indem sie den Ursprung im Anforderungsheader überprüft.
Cross-Origin-Resource-Sharing-Standard
Cross-Origin-Resource-Sharing-Standard fügt eine Reihe von HTTP-Headern hinzu, damit der Server deklarieren kann, auf welche Quellen über den Browser zugegriffen werden kann auf den Serverressourcen. Darüber hinaus verlangt der Standard für HTTP-Anfragemethoden, die destruktive Antworten auf Serverdaten verursachen (insbesondere andere HTTP-Methoden als GET oder POST-Anfragen mit bestimmten MIME-Typen), dringend, dass der Browser zunächst eine voreingestellte Anfrage in der OPTIONS-Anfragemethode senden muss . Anfrage (Preflight-Anfrage), um die vom Server unterstützten HTTP-Methoden für Cross-Origin-Anfragen zu erhalten. Nachdem Sie bestätigt haben, dass der Server ursprungsübergreifende Anfragen zulässt, senden Sie die echte Anfrage mit der tatsächlichen HTTP-Anfragemethode. Der Server kann den Client auch darüber informieren, ob Kreditinformationen (einschließlich Cookies und HTTP-Authentifizierungsdaten) zusammen mit der Anfrage gesendet werden müssen.
Der Cross-Origin-Sharing-Standard erfordert die Zusammenarbeit von Browser und Server. Derzeit können Browserhersteller den Anforderungsteil automatisch abschließen, sodass der Fokus weiterhin auf dem Cross-Origin-Ressourcenzugriff liegt der Serverseite.
Nachfolgend sind einige Antwortheader und Anforderungsheader aufgeführt, die im Standard verfügbar sind.
Antwortheader
Access-Control-Allow-Origin: Gibt an, welche Anforderungsquellen auf Ressourcen zugreifen dürfen. Der Wert kann „*“, „null“, sein. oder eine einzelne Quelladresse.
Access-Control-Allow-Credentials: Gibt an, ob die Antwort verfügbar gemacht wird, wenn die Anmeldeinformations-ID in der Anfrage weggelassen wird. Bei Vorabanfragen bedeutet es, dass die Benutzeranmeldeinformationen in die eigentliche Anfrage einbezogen werden können.
Access-Control-Expose-Headers: Gibt an, welche Header-Informationen sicher der API der CORS-API-Spezifikation ausgesetzt werden können.
Access-Control-Max-Age: Gibt an, wie lange Vorabanfragen im Vorabanfragecache gespeichert werden können.
Access-Control-Allow-Methods: Für Vorabanfragen, welche Anfragemethoden für tatsächliche Anfragen verwendet werden können.
Access-Control-Allow-Headers: Gibt bei Vorabanfragen an, welche Headerinformationen in der eigentlichen Anfrage verwendet werden können.
Ursprung: Gibt die Quelle der Voranfrage oder domänenübergreifenden Anfrage an.
Access-Control-Request-Method: Geben Sie für Voranfragen an, welche Anfragemethoden in Voranfragen in tatsächlichen Anfragen verwendet werden können.
Access-Control-Request-Headers: Gibt an, welche Header-Informationen in der Voranfrage in der tatsächlichen Anfrage verwendet werden können.
Anfrage-Header
Ursprung: Gibt die Quelle der Anfrage oder Voranfrage an.
Access-Control-Request-Method: Bringen Sie diesen Anfrageheader beim Senden der Voranfrage mit und geben Sie die Anfragemethode an, die in der eigentlichen Anfrage verwendet wird.
Zugriffskontroll-Anfrage-Header: Dieser Anfrage-Header wird beim Senden der Voranfrage einbezogen und gibt die Anfrage-Header an, die die eigentliche Anfrage tragen wird.
Middleware
Um domänenübergreifende Anfragen in Laravel zu ermöglichen, können wir eine Middleware erstellen, die Antworten anhängt, um Antwortheader hinzuzufügen, die speziell domänenübergreifende Anfragen verarbeiten :
<?php namespace App\Http\Middleware; use Closure; use Response; class EnableCrossRequestMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', config('app.allow')); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); return $response; } }
Folgende Dinge sind zu beachten:
Für Cross-Domain Für Zugriffsanfragen, die von Authentifizierungsinformationen begleitet werden müssen, müssen Sie in der XMLHttpRequest-Instanz „withCredentials“ als „true“ angeben.
Sie können diese Middleware entsprechend Ihren eigenen Anforderungen erstellen. Wenn Sie Authentifizierungsinformationen (einschließlich Cookie, Sitzung) in die Anfrage aufnehmen müssen, müssen Sie Access-Control-Allow angeben -Credentials Ist wahr, da der Browser bei Vorabanforderungen die Antwort direkt ignoriert, wenn Sie diesen Antwortheader nicht angeben.
Wenn Access-Control-Allow-Credentials in der Antwort als „true“ angegeben ist, kann Access-Control-Allow-Origin nicht als *
Drei Möglichkeiten, wie jQuery JSONP verwendet, um domänenübergreifende Daten zu erhalten
Das obige ist der detaillierte Inhalt vonMethode zur domänenübergreifenden Funktionsaktivierung von Laravel zur Instanzanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!