Heim > PHP-Framework > Laravel > Implementierungsschritte für den domänenübergreifenden Zugriff auf die Laravel-API

Implementierungsschritte für den domänenübergreifenden Zugriff auf die Laravel-API

不言
Freigeben: 2018-10-26 16:36:53
nach vorne
3986 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den Implementierungsschritten des domänenübergreifenden Zugriffs auf die Laravel-API. Ich hoffe, dass er für Freunde hilfreich ist.

Server A fordert die Schnittstelle von Server B an, dann treten im Allgemeinen domänenübergreifende Probleme auf.

XMLHttpRequest cannot load http://api.console.vms3.com/api/user. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' istherefore not allowed access.
Nach dem Login kopieren

bedeutet, dass die Serverantwort keinen domänenübergreifenden Zugriff zulässt

Dann müssen wir den Server aktivieren, um den domänenübergreifenden Zugriff zu unterstützen, das heißt,

'Access-Control-Allow-Origin: *'
Nach dem Login kopieren
zum Antwortheader. Schritt eins: Middleware erstellen

创建 `app/Http/Middleware/AccessControlAllowOrigin.php` middleware 把 'Access-Control-Allow-Origin: *' 写入头部.
app/Http/Middleware/AccessControlAllowOrigin.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class AccessControlAllowOrigin
{
    /**
     *
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        header(&#39;Access-Control-Allow-Origin: *&#39;);
        header("Access-Control-Allow-Credentials: true");
        header("Access-Control-Allow-Methods: *");
        header("Access-Control-Allow-Headers: Content-Type,Access-Token");
        header("Access-Control-Expose-Headers: *");

        return $next($request);
    }

}
Nach dem Login kopieren

Schritt zwei: Route registrieren

Registrieren Sie diese

in middleware im Array kernel
bzw. Fügen Sie im Array protected $middleware den Dateinamen protected $routeMiddleware hinzu, den wir gerade erstellt haben, und verwenden Sie dabei den Alias ​​
classSchritt 3: Legen Sie die Middleware-Schutzschnittstelle fest cors

und dann Wenn Sie es zum Schutz der API festlegen, fügen Sie seinen Alias ​​zum Array von

hinzu. In diesem Artikel ist es

$middlewareGroups[&#39;api&#39;]&#39;cors&#39;

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application&#39;s global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\AccessControlAllowOrigin::class,
    ];

    /**
     * The application&#39;s route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        &#39;web&#39; => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
            'cors'
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used inpidually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'cors' => \App\Http\Middleware\AccessControlAllowOrigin::class,
    ];
}
Nach dem Login kopieren

Schritt 4: Route hinzufügen app/Http/Kernel.php
Route::middleware('cors')->group(function () {
    //
});
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonImplementierungsschritte für den domänenübergreifenden Zugriff auf die Laravel-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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