Published on

Laravel CORS 設定

Authors
  • avatar
    Name
    Kaix
/
Tags

什麼是 CORS

CORS(Cross-Origin Resource Sharing),因為同源政策,當前端發送 Request 跟伺服器要資料時,若不是在相同的網域、相同的協定以及相同的連接阜下,就會發生錯誤。

這時候瀏覽器會發送跨域請求,伺服器會回應 CORS 的 Header,告訴瀏覽器可以存取哪些資源。

跨域請求分成簡單請求(Simple Request)和預檢請求(Preflight Request)。

簡單請求

簡單請求(Simple Request),只會發送 GET、POST、HEAD 這三種方法,

預檢請求

預檢請求(Preflight Request),會發送 OPTIONS 方法,詢問伺服器是否可以存取該資源。 成功後再送一次真正的請求。

設定 CORS

Laravel 在 8 以下使用 fruitcake/laravel-cors,在 9 之後則整合到框架中。

fruitcake/laravel-cors 設定方式:

需要先安裝 fruitcake/laravel-cors 套件

composer require fruitcake/laravel-cors
// app/Http/Kernel.php

protected $middleware = [
    \Fruitcake\Cors\HandleCors::class,
];
// config/cors.php

return [
    'paths' => ['*'],
];

Laravel cors 設定方式:

直接在 config/cors.php 設定 就可以了

// config/cors.php

return [
    'paths' => ['*'],
];

結論

選擇使用 Laravel 的 cors 設定方式,比較簡單,也可以設定只允許特定路徑或是允許多個網域,並且方便統一管理。 但若要再更進一步設定,像是針對使用者做動態設定等更細部的設定,就需要手動寫更複雜的 middleware 了。

參考資料