Heim >Backend-Entwicklung >PHP-Tutorial >So lösen Sie domänenübergreifende Probleme in der Laravel-Entwicklung

So lösen Sie domänenübergreifende Probleme in der Laravel-Entwicklung

不言
不言Original
2018-06-13 14:08:491716Durchsuche

Kürzlich bin ich während der Entwicklung auf relevante Lösungen gestoßen, indem ich nach relevanten Informationen gesucht habe. Der folgende Artikel stellt Ihnen daher hauptsächlich domänenübergreifende Lösungen in der Laravel-Entwicklung vor Ausführlich. Freunde, die es brauchen, können es sich gemeinsam ansehen.

Vorwort

Wie wir alle wissen, verwenden wir alle Laravel für die Entwicklung, insbesondere wenn das Front-End und das Back-End vollständig sind getrennt, da das Front-End-Projekt auf dem angegebenen Port Ihres eigenen Computers (es kann auch der Computer eines anderen sein) ausgeführt wird, z. B. localhost: 8000, und das Laravel-Programm auf einem anderen Port ausgeführt wird, also domänenübergreifend Aufgrund der Same-Origin-Richtlinie des Browsers sind domänenübergreifende Anfragen illegal. Tatsächlich ist dieses Problem leicht zu lösen, indem einfach eine Middleware hinzugefügt wird. 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

2. 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;
 }
}

Die Array-Variable $allow_origin ist die Liste der domänenübergreifenden, die Sie zulassen, und kann geändert werden alleine.

3. Registrieren Sie dann die Middleware in der Kerneldatei

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

Fügen Sie das $middleware-Attribut des AppHttpKernel hinzu Klasse, 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.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Informationen zum Empfang von Datenanalysen durch Laravel vom Front-End-Ajax

So implementieren Sie Supervisor im Laravel-Framework in PHP Asynchronen Prozess ausführen

Das obige ist der detaillierte Inhalt vonSo lösen Sie domänenübergreifende Probleme 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