Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung domänenübergreifender Lösungen in der Laravel-Entwicklung

Detaillierte Erläuterung domänenübergreifender Lösungen in der Laravel-Entwicklung

黄舟
黄舟Original
2017-11-01 09:19:552342Durchsuche

Vorwort

Wie wir alle wissen, wenn wir alle Laravel für die Entwicklung verwenden, insbesondere wenn das Front-End und das Back-End vollständig getrennt sind, da das Front-End Das Endprojekt wird auf dem angegebenen Port unseres eigenen Computers ausgeführt (es kann sich auch um den Computer eines anderen handeln), z. B. localhost:8000, und das Laravel-Programm wird auf einem anderen Port ausgeführt, sodass es aufgrund des Browsers gleich ist -Origin-Richtlinie, domänenübergreifende Anfragen sind illegal. Tatsächlich lässt sich dieses Problem leicht lösen, indem man einfach eine Middleware hinzufügt. Im Folgenden gibt es nicht viel zu sagen. Folgen wir dem Herausgeber, um die detaillierten Lösungen zu sehen.

Lösung:

1. Erstellen Sie eine neue Middleware

php artisan make:middleware EnableCrossRequestMiddleware

Schreiben Sie den Middleware-Inhalt

<?php
namespace App\Http\Middleware;
use Closure;
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);
 $origin = $request->server(&#39;HTTP_ORIGIN&#39;) ? $request->server(&#39;HTTP_ORIGIN&#39;) : &#39;&#39;;
 $allow_origin = [
  &#39;http://localhost:8000&#39;,
 ];
 if (in_array($origin, $allow_origin)) {
  $response->header(&#39;Access-Control-Allow-Origin&#39;, $origin);
  $response->header(&#39;Access-Control-Allow-Headers&#39;, &#39;Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN&#39;);
  $response->header(&#39;Access-Control-Expose-Headers&#39;, &#39;Authorization, authenticated&#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;
 }
}

$allow_origin ArrayDie Variable ist Ihre zulässige domänenübergreifende Liste und kann von Ihnen selbst geändert werden.

3. Registrieren Sie dann die Middleware in der Kerneldatei

 protected $middleware = [
 // more
 App\Http\Middleware\EnableCrossRequestMiddleware::class,
 ];

Fügen Sie sie im Attribut $middleware der AppHttpKernel-Klasse hinzu. Die hier registrierte Middleware gehört zur globalen Middleware.
Dann werden Sie feststellen, dass die Frontend-Seite bereits domänenübergreifende Anfragen senden kann.

Es ist normal, dass es eine weitere Anfrage gibt, bei der die Methode auf Optionen gesetzt ist, da der Browser zunächst feststellen muss, ob der Server die domänenübergreifende Anfrage zulässt.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung domänenübergreifender Lösungen in der Laravel-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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