Aktivieren von CORS in Laravel 5.1
Bei der Entwicklung von APIs mit Laravel 5.1 ist die Aktivierung von Cross-Origin Resource Sharing (CORS) von entscheidender Bedeutung, um Anfragen zuzulassen unterschiedlicher Herkunft. Obwohl es verschiedene CORS-Bibliotheken gibt, konzentriert sich dieser Artikel auf eine benutzerdefinierte Middleware-Implementierung, die speziell auf Laravel 5.1 zugeschnitten ist.
Middleware für CORS
Um CORS zu aktivieren, erstellen Sie eine Middleware-Klasse in app/Http/Middleware/CORS.php:
use Closure; class CORS { public function handle($request, Closure $next) { header("Access-Control-Allow-Origin: *"); $headers = [ '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::make('OK', 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } }
Registrieren der Middleware
Registrieren Sie Ihre Middleware in der App/Http/Kernel.php:
protected $routeMiddleware = [ 'cors' => 'App\Http\Middleware\CORS', ];
Verwenden der Middleware
Um CORS zu verwenden Middleware in einer Route hinzufügen, fügen Sie 'middleware' => 'cors' zur Routendefinition:
Route::get('example', ['middleware' => 'cors', function () { return 'example'; }]);
Laravel ^8.0 Update
In Laravel-Versionen 8.0 und höher müssen Sie den Controller-Namespace importieren und verwenden Klassennamen wie folgt:
use App\Http\Controllers\ExampleController; Route::get('example', [ExampleController::class, 'dummy'])->middleware('cors');
Indem Sie diese Schritte befolgen, können Sie CORS mühelos in Ihrem Laravel aktivieren 5.1 API, die Anfragen von verschiedenen Domänen ermöglicht und eine sichere und flexible API-Umgebung bietet.
Das obige ist der detaillierte Inhalt vonWie implementiert man benutzerdefinierte CORS-Middleware in Laravel 5.1?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!