Heim > PHP-Framework > Laravel > Laravel implementiert domänenübergreifenden Zugriff

Laravel implementiert domänenübergreifenden Zugriff

PHPz
Freigeben: 2023-05-26 17:32:07
Original
2837 Leute haben es durchsucht

In modernen Webanwendungen ist Cross-Origin Resource Sharing (CORS) zu einer wesentlichen Funktion geworden. Wenn wir das Laravel-Framework zur Entwicklung von Webanwendungen verwenden, stoßen wir häufig auf Situationen, in denen ein domänenübergreifender Zugriff erreicht werden muss. In diesem Artikel wird erläutert, wie Sie mit dem Laravel-Framework eine domänenübergreifende gemeinsame Nutzung von Ressourcen erreichen, damit wir flexiblere und effizientere Webanwendungen entwickeln können.

Was ist domänenübergreifende Ressourcenfreigabe?

In der Webentwicklung bezieht sich Cross-Origin Resource Sharing (CORS) auf die Nutzung der Ressourcen einer anderen Website auf den Seiten einer Website. Beispielsweise nutzt eine Website (Website A) die API-Schnittstelle einer anderen Website (Website B), um Daten usw. abzurufen. Aufgrund der Same-Origin-Policy des Browsers ist die direkte Nutzung von Ressourcen einer anderen Website nicht zulässig. In diesem Fall müssen wir die domänenübergreifende gemeinsame Nutzung von Ressourcen verwenden, um die Interaktion von Daten zwischen verschiedenen Domänen zu ermöglichen.

Wie implementiert Laravel den domänenübergreifenden Zugriff?

Das Laravel-Framework bietet viele nützliche Middlewares, die problemlos einen domänenübergreifenden Zugriff ermöglichen. Im Folgenden stellen wir zwei Implementierungsmethoden vor.

Die erste Implementierungsmethode: Verwendung der CORS-Middleware von Laravel.

Zuerst müssen Sie ein CORS-Middleware-Paket eines Drittanbieters einführen. Die spezifischen Schritte sind wie folgt:

  1. Installieren Sie die Laravel-Cors Paket
composer require barryvdh/laravel-cors
Nach dem Login kopieren
  1. Registrieren Sie die Middleware

Registrieren Sie die Middleware in der Datei appHttpKernel.php:

protected $middleware = [
    // Other middlewares
    BarryvdhCorsHandleCors::class,
];
Nach dem Login kopieren
  1. Konfigurieren Sie CORS-Parameter

Konfigurieren Sie dann die domänenübergreifenden Parameter in der Datei config/cors.php wie folgt:

<?php
return [
    'paths' => [
        'api/*',
        '/*'
    ],

    'allowed_methods' => [
        'GET',
        'POST',
        'PUT',
        'DELETE',
        'OPTIONS',
    ],

    'allowed_origins' => [
        '*',
    ],

    'allowed_origins_patterns' => [],

    'allowed_headers' => [
        'Content-Type',
        'X-Requested-With',
        'Authorization',
        'Accept',
        'Origin',
    ],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,
];
Nach dem Login kopieren

Im obigen Code definiert das Attribut „paths“ die API-Pfade, die domänenübergreifend unterstützen müssen, das Attribut „allowed_methods“ definiert die zulässigen domänenübergreifenden HTTP-Methoden und das Attribut „allowed_origins“ definiert die zulässigen domänenübergreifenden Quellen (* bezeichnet alle Quellen). ) und das Attribut „allowed_headers“ definiert die zulässigen domänenübergreifenden Anforderungsheader.

Die zweite Implementierungsmethode: Verwendung der Middleware von Laravel

Es ist auch eine gute Wahl, den domänenübergreifenden Zugriff über benutzerdefinierte Laravel-Middleware zu implementieren. Auf diese Weise müssen wir selbst eine Laravel-Middleware schreiben, um domänenübergreifende Zugriffsanfragen zu verarbeiten. Das Folgende ist ein grundlegendes Implementierungsbeispiel:

  1. Erstellen Sie eine domänenübergreifende Middleware.

Zuerst müssen wir eine CorsMiddleware.php-Datei im Verzeichnis app/Http/Middleware erstellen. Der Dateiinhalt lautet wie folgt:

<?php
namespace AppHttpMiddleware;

use Closure;

class CorsMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $response->header('Access-Control-Allow-Origin', '*')
                 ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
                 ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization');

        return $response;
    }
}
Nach dem Login kopieren

The Handle im obigen Code. Methoden können bei jeder Anfrage ausgeführt werden, was einen domänenübergreifenden Zugriff durch das Festlegen von Antwortheadern ermöglicht.

  1. Registrieren Sie domänenübergreifende Middleware

Dann müssen wir CorsMiddleware zur einfachen Verwendung im Laravel-Framework registrieren. Fügen Sie den folgenden Code zur Datei app/Http/Kernel.php hinzu:

protected $routeMiddleware = [
    // Other middleware
    'cors' => AppHttpMiddlewareCorsMiddleware::class,
];
Nach dem Login kopieren

CorsMiddleware::class im obigen Code ist unsere benutzerdefinierte CorsMiddleware-Middleware. Nach der Registrierung können Sie sie im Programm verwenden.

  1. Verwenden Sie domänenübergreifende Middleware

Verwenden Sie in Controllern oder Routen, die domänenübergreifend unterstützen müssen, die registrierte CorsMiddleware, zum Beispiel:

Route::group(['middleware' => ['cors']], function () {
    // 这里可以添加跨域API
});
Nach dem Login kopieren

Bis zu diesem Punkt haben wir Laravel auf zwei Arten erfolgreich implementiert: Domänenübergreifend Zugriff im Rahmen des Frameworks. In der tatsächlichen Entwicklung können wir je nach spezifischen Anforderungen eine Methode auswählen, die zu uns passt, um einen domänenübergreifenden Zugriff zu erreichen und so unsere Webanwendungen flexibler und effizienter zu machen.

Das obige ist der detaillierte Inhalt vonLaravel implementiert domänenübergreifenden Zugriff. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage