Heim > PHP-Framework > Laravel > domänenübergreifende Laravel-Lösung

domänenübergreifende Laravel-Lösung

藏色散人
Freigeben: 2019-10-22 13:27:08
nach vorne
3442 Leute haben es durchsucht

Wenn wir Laravel für die Entwicklung verwenden, insbesondere wenn Front-End und Back-End vollständig getrennt sind, da das Front-End-Projekt auf dem angegebenen Port unserer eigenen Maschine läuft (es können auch Maschinen anderer Leute sein), z als localhost:8000, und das Laravel-Programm, das auf einem anderen Port ausgeführt wird, macht es domänenübergreifend, und aufgrund der Same-Origin-Richtlinie des Browsers sind domänenübergreifende Anforderungen illegal. Tatsächlich ist dieses Problem leicht zu lösen, indem Sie einfach eine Middleware hinzufügen.

1. Erstellen Sie eine neue Middleware

php artisan make:middleware EnableCrossRequestMiddleware
Nach dem Login kopieren

2. 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(&#39;HTTP_ORIGIN&#39;) ? $request->server(&#39;HTTP_ORIGIN&#39;) : &#39;&#39;;
        $allow_origin = [
            &#39;http://localhost:8000&#39;,
        ];
        if (in_array($origin, $allow_origin)) {
            $response->header(&#39;Access-Control-Allow-Origin&#39;, $origin);
            $response->header(&#39;Access-Control-Allow-Headers&#39;, &#39;Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN&#39;);
            $response->header(&#39;Access-Control-Expose-Headers&#39;, &#39;Authorization, authenticated&#39;);
            $response->header(&#39;Access-Control-Allow-Methods&#39;, &#39;GET, POST, PATCH, PUT, OPTIONS&#39;);
            $response->header(&#39;Access-Control-Allow-Credentials&#39;, &#39;true&#39;);
        }
        return $response;
    }
}
Nach dem Login kopieren

$allow_origin-Array-Variable Die Liste der erlaubten Cross-Domains können Sie selbst ändern.

3. Registrieren Sie dann die Middleware in der Kerneldatei

    protected $middleware = [
        // more
        App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];
Nach dem Login kopieren

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.

Weitere technische Artikel zu Laravel finden Sie in der Spalte Einführungs-Tutorial zum Laravel-Framework, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vondomänenübergreifende Laravel-Lösung. 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