Heim > Backend-Entwicklung > PHP-Tutorial > Beispiel für Laravel, das domänenübergreifende Funktionalität ermöglicht

Beispiel für Laravel, das domänenübergreifende Funktionalität ermöglicht

黄舟
Freigeben: 2023-03-15 20:58:02
Original
1216 Leute haben es durchsucht

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- und Lernwert für alle, die ihn benötigen Es kann weiter unten folgen.

Vorwort

Dieser Artikel stellt Ihnen hauptsächlich den relevanten Inhalt über Laravel vor, der domänenübergreifende Funktionen ermöglicht, und stellt ihn für Ihre Referenz und Ihr Studium zur Verfügung . Zu den folgenden Worten gibt es nicht viel mehr zu sagen, werfen wir einen Blick auf die ausführliche Einleitung.

Domänenübergreifende Anfragen

Aus Sicherheitsgründen beschränken Browser domänenübergreifende Anfragen in Script. 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.

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-Standard für die gemeinsame Nutzung von Ressourcen

Der Cross-Origin-Standard für die gemeinsame Nutzung von Ressourcen ermöglicht es dem Server, welche zu deklarieren Quellen können über den Browser auf Ressourcen auf dem Server zugreifen. Darüber hinaus verlangt der Standard für HTTP-Anfragemethoden, die destruktive Antworten auf Serverdaten hervorrufen (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 „*“ sein. ", "null" 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 eine spezielle Verarbeitung für domänenübergreifend hinzuzufügen Anfragen. Antwortheader der Domain-Anfrage:


<?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(&#39;Access-Control-Allow-Origin&#39;, config(&#39;app.allow&#39;));
  $response->header(&#39;Access-Control-Allow-Headers&#39;, &#39;Origin, Content-Type, Cookie, Accept&#39;);
  $response->header(&#39;Access-Control-Allow-Methods&#39;, &#39;GET, POST, PATCH, PUT, OPTIONS&#39;);
  $response->header(&#39;Access-Control-Allow-Credentials&#39;, &#39;true&#39;);
  return $response;
 }

}
Nach dem Login kopieren

Die folgenden Dinge sind zu beachten:

  • Für domänenübergreifende Zugriffsanfragen, die von Authentifizierungsinformationen begleitet werden müssen, müssen Sie withCredentials in der XMLHttpRequest-Instanz 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-Credentials als angeben wahr, denn wenn Sie bei Vorabanfragen den Antwortheader nicht angeben, ignoriert der Browser die Antwort direkt.

  • Wenn Access-Control-Allow-Credentials in der Antwort als „true“ angegeben ist, kann Access-Control-Allow-Origin nicht als *

  • Post-Middleware fügt nur dann Antwortheader hinzu, wenn normal reagiert wird. Wenn eine Ausnahme auftritt, wird die Antwort nicht durch die Middleware geleitet.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonBeispiel für Laravel, das domänenübergreifende Funktionalität ermöglicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage