【问题标题】:Laravel on https domain respons from httpLaravel 对来自 http 的 https 域响应
【发布时间】:2019-02-12 14:56:08
【问题描述】:

我正在尝试使用 SPA - Angular 6 和后端 API - Laravel 和 Dingo/API 来实现 facebook 身份验证。

当我尝试重定向并返回 SPA 页面时

public function redirectToProvider()
    {
        return Socialite::driver('facebook')->stateless()->redirect()->getTargetUrl();
    }

由于某种原因,响应来自 http 而不是 https 根据错误。

[阻止]https://www.domain/ 的页面不允许显示来自http://api.domain/auth/facebook 的不安全内容。

不过,我已将我的域设置为在 https 上并将所有 http 请求重定向到 https。此外,我正在使用 GET 方法调用https://api.domain/auth/facebook

【问题讨论】:

  • 您是否检查了您在路由文件或 Facebook 开发者控制台中指定的重定向 url
  • 确实如此。它还使用 https。此外,我已指定设置为将 http 请求重定向到 https

标签: angular laravel laravel-socialite dingo-api


【解决方案1】:

正如我在another question 中提到的,使用 https 协议使 laravel 工作的方法很少:

  1. 配置您的网络服务器以将所有非安全请求重定向到 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');
    
  5. 路由组的隐式设置方案(Laravel5.6):

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

【讨论】:

  • APP url就是这样设置的
  • 也试过设置$api->group([ 'version' => 1, 'middleware' => 'api', 'scheme' => 'https', 'namespace' => $this->namespace, ],还是不行
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2015-07-08
  • 2018-12-01
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
相关资源
最近更新 更多