如何强制Laravel项目对所有路由使用HTTPS?

2022-08-30 07:45:34

我正在处理一个需要安全连接的项目。

我可以通过以下方式设置路由,uri,资产以使用“https”:

Route::get('order/details/{id}', ['uses' => 'OrderController@details', 'as' => 'order.details', 'https']);

url($language.'/index', [], true)

asset('css/bootstrap.min.css', true)

但是,始终设置参数似乎很累人。

有没有办法强制所有路由生成HTTPS链接?


答案 1

将其放在 boot() 方法中的 AppServiceProvider 中

if($this->app->environment('production')) {
    \URL::forceScheme('https');
}

答案 2

这里有几种方法。选择最方便。

  1. 配置 Web 服务器以将所有不安全的请求重定向到 https。nginx配置示例:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name example.com www.example.com;
        return 301 https://example.com$request_uri;
    }
    
  2. 使用 https 设置环境变量:APP_URL

    APP_URL=https://example.com
    
  3. 使用辅助程序 secure_url() (Laravel5.6)

  4. 将以下字符串添加到 AppServiceProvider::boot() 方法(适用于版本 5.4+):

    \Illuminate\Support\Facades\URL::forceScheme('https');
    

更新:

  1. 隐式设置路由组方案 (Laravel5.6):

    Route::group(['scheme' => 'https'], function () {
        // Route::get(...)->name(...);
    });
    

推荐