繁体   English   中英

Laravel 使用 DigitalOcean App 部署 - HTTP 问题

[英]Laravel deployed with DigitalOcean App - HTTP issue

我使用来自 GitHub 的“App”服务将 Laravel 9 应用程序(使用 Jetstream/Livewire)部署到 DigitalOcean。部署很顺利,CI/CD 工作正常。

在浏览器中查看应用程序时,我注意到资产(CSS 和 JS)正在使用 HTTP URL 提供服务。现代浏览器都不喜欢这样(称为“混合内容”)。 所以我配置了 Vite ( /vite.config.js ) 使用 HTTPS 来编译资产。现在它们可以工作了。

但是,Laravel 本身在 Blade 模板( url()route() )中构建 URL 时坚持使用 HTTP。 例如,在登录页面上,登录表单操作是http://mywebsite.com

我试过了:

  1. 编辑 AppServiceProvider.php 并添加\Illuminate\Support\Facades\URL::forceScheme('https'); boot()方法
  2. 在 TrustProxies 中间件中将代理设置为'*'
  3. 将所有CloudFlare IP添加到 TrustProxies 中间件的代理属性
  4. APP_URLASSET_URL设置为https://mywebsite.com in.env
  5. 通过php artisan optimize:clear更改设置后清除缓存

但这些都没有帮助,forms(和其他 URL)是在 HTTP 方案下生成的。 我猜反向代理设置令人困惑 Laravel。什么是正确的 Laravel 设置以帮助它与 DigitalOcean App 服务(使用 Heroku 和 CloudFlare?用于部署)很好地配合?

事实证明, forceScheme()应该添加为

\URL::forceScheme('https');

而不是作为

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

因为它存在于Illuminate\Routing\UrlGenerator class 中。inte.nets 中的一些答案误导了我......不要让它误导你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM