溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

laravel怎么跨域

發(fā)布時間:2020-12-31 11:19:15 來源:億速云 閱讀:159 作者:小新 欄目:編程語言

小編給大家分享一下laravel怎么跨域,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

                                                       我們在用 laravel 進行開發(fā)的時候,特別是前后端完全分離的時候,由于前端項目運行在自己機器的指定端口(也可能是其他人的機器) , 例如 localhost:8000 , 而 laravel 程序又運行在另一個端口,這樣就跨域了,而由于瀏覽器的同源策略,跨域請求是非法的。其實這個問題很好解決,只需要添加一個中間件就可以了。

1.新建一個中間件

php artisan make:middleware EnableCrossRequestMiddleware

2.書寫中間件內(nèi)容

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

$allow_origin 數(shù)組變量就是你允許跨域的列表了,可自行修改。

3.然后在內(nèi)核文件注冊該中間件

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

在 App\Http\Kernel 類的 $middleware 屬性添加,這里注冊的中間件屬于全局中間件。

然后你就會發(fā)現(xiàn)前端頁面已經(jīng)可以發(fā)送跨域請求了。

會多出一次 method 為 options 的請求是正常的,因為瀏覽器要先判斷該服務(wù)器是否允許該跨域請求。

看完了這篇文章,相信你對“l(fā)aravel怎么跨域”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI