Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung domänenübergreifender Lösungen in der Laravel-Entwicklung
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('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : ''; $allow_origin = [ 'http://localhost:8000', ]; if (in_array($origin, $allow_origin)) { $response->header('Access-Control-Allow-Origin', $origin); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN'); $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); } 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!