Wenn Sie Laravel zum Erstellen von Webanwendungen verwenden, verbietet der Browser aus Sicherheitsgründen standardmäßig domänenübergreifende Anfragen zwischen verschiedenen Domänen, was dazu führen kann, dass einige Funktionen nicht ordnungsgemäß funktionieren. In diesem Artikel wird erläutert, wie Sie Einschränkungen für Cross-Origin-Anfragen in einer Laravel-Anwendung deaktivieren.
Cross-Origin-Request ist eine Technologie, die domänenübergreifende Anfragen im Browser initiiert, beispielsweise eine Anfrage an eine API, die auf localhost:8080 läuft, von einer Anwendung, die auf localhost:8000 läuft.
Laravel hat standardmäßig recht strenge Beschränkungen für domänenübergreifende Anfragen. Dies dient dazu, Angriffe zur Fälschung standortübergreifender Anfragen zu verhindern. Wenn Ihre Anwendung domänenübergreifende Anforderungen unterstützen muss, müssen Sie daher einige Schritte unternehmen, um die Einschränkungen für domänenübergreifende Anforderungen von Laravel zu deaktivieren.
Hier sind einige Methoden, mit denen Sie Einschränkungen für domänenübergreifende Anfragen in Ihrer Laravel-Anwendung deaktivieren können:
Sie können einen Proxy verwenden, um domänenübergreifende Anfragen weiterzuleiten. In diesem Fall wird die Anfrage an einen Server gesendet, der sich in derselben Domäne wie die Webanwendung befindet und für den keine domänenübergreifenden Anfragebeschränkungen gelten. Laravel-Anwendungen erwarten immer, dass Anfragen vom lokalen Server kommen. Machen Sie sich also keine Sorgen um die gerenderte Schnittstelle.
Es ist möglich, eine Middleware zu schreiben, um domänenübergreifende Anfragen zu ermöglichen. Diese Middleware legt die erforderlichen Header fest, um die Beantwortung ursprungsübergreifender Anfragen zu ermöglichen. Hier ist ein Beispielcode zum Hinzufügen von Middleware in Ihrer Laravel-Anwendung:
<?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE', 'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin', ]; if ($request->getMethod() == "OPTIONS") { return response()->json('{"method":"OPTIONS"}', 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } }
In Ihrer Anwendung können Sie diese Middleware zu den Routen hinzufügen, auf denen Sie domänenübergreifende Anforderungsbeschränkungen deaktivieren möchten, oder sie zur globalen Middleware-Gruppe hinzufügen.
Laravel bietet eine integrierte Möglichkeit, domänenübergreifende Anforderungen zu bearbeiten. Die domänenübergreifende Anforderungsfunktion von Laravel kann beispielsweise in einer Route oder einem Controller verwendet werden:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; class ApiController extends Controller { public function index(Request $request) { $data = [ 'name' => 'John Doe', 'email' => 'johndoe@example.com', ]; $response = new Response($data); $response->header('Access-Control-Allow-Origin', '*'); $response->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE'); $response->header('Access-Control-Allow-Headers', 'Content-Type, X-Auth-Token, Origin'); return $response; } }
Der obige Code legt den Antwortheader fest, um domänenübergreifende Anforderungen von allen Ursprüngen zuzulassen.
Zusammenfassung:
In diesem Artikel werden drei Methoden zum Deaktivieren domänenübergreifender Anforderungsbeschränkungen in Laravel-Anwendungen vorgestellt. Die Verwendung eines Proxys ist wahrscheinlich der einfachste Weg, dies zu tun, aber Sie können Middleware oder die integrierten Funktionen von Laravel verwenden, um eine detailliertere Kontrolle über Cross-Origin-Anfragen zu erhalten. Abhängig von Ihren Anwendungsanforderungen können Sie die Richtlinie auswählen, die am besten zu Ihnen passt, um Einschränkungen für Cross-Origin-Anfragen zu deaktivieren.
Das obige ist der detaillierte Inhalt vonSo deaktivieren Sie Einschränkungen für domänenübergreifende Anfragen in Laravel-Projekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!