问题描述
我开发了一个带有登录部分的网站,使用 Jetstream(使用 Fortify)对用户进行身份验证。在本地环境中,它工作正常。生产环境(通过 AWS 上的 Elastic Beanstalk)无法使用 SSL 证书。
为了让 Laravel 在生产中使用 HTTPS,我在 AppServiceProvider 中添加了以下代码。
public function boot()
{
if (App::environment('production')) {
URL::forceScheme('https');
}
}
现在对于所有路由,它都可以完美运行,除了登录后的重定向。然后使用 HTTP 而不是 HTTPS 重定向路由。出现混合内容错误。
要检查所有代码,请随时查看 https://github.com/harmjanbeekhuis/reddingsbrigadededukers。 我很乐意提供解决此问题所需的任何进一步信息。
解决方法
经过更多的研究和大量的反复试验,我发现错误出在 XMLHttpRequest 而不是路由中。将下面的部分添加到 AppServiceProvider 是解决方案。
public function register()
{
if (App::environment('production')) {
$this->app['request']->server->set('HTTPS',true);
}
}