博客搭建过程中https引入http问题

前文中讲过,现在使用的这套博客的程序是从白俊遥大神开放出来的一套博客系统,搭建的过程大致如下

1、网站下方点击项目名称进入github

2、clone或直接下载源码到服务器

3、php项目的部署就不多说了

4、配置cdn

5、申请证书

6、通过cdn配置https证书

打开浏览器访问

一看竟然是https请求引入了http资源报错,那我们就开始分析一下问题
  1. 通过报错文件名找到引入资源位置

  2. 发现这个里面用到了asset函数引入,已知这个系统用的是laravel ,通过 php artisan --version 命令 查找到版本 Laravel Framework 8.38.0,那我们就查找一些asset函数的介绍

  1. 里面很重要的话便是 “根据当前的请求协议( HTTP 或 HTTPS )” 我们系统中粗略的协议流程大致是这样 可以看到 用户访问到cdn会是https请求,但是真正落地到服务器的是http请求

     这个问题大概能想到几种方案解决呢
     - 修改cdn落地到服务器为https请求(证书部署,多台集群每一个都要加证书,内网互相调用还需要配置80和443两个端口,麻烦)
     - nginx匹配替换(通过nginx的替换函数,匹配到http://blog.51chihu.com改成https://blog.51chihu.com,太暴力了)
     - 想办法让函数不通过当前协议  反正我们也有http自动跳转https ,那就直接定死https
    
  2. 那我们的解决方案基本上就确定了,让asset这个函数不通过当前请求的协议就好了,强制使用https,万能的百度搜索 “laravel asset强制使用https”

修改 app/Providers/AppServiceProvider.php 这个文件

use Illuminate\Routing\UrlGenerator;

public function boot(UrlGenerator $url)

$url->forceScheme('https');

OK 完美解决

鄙视声明

百度的过程中发现指定协议调用的 forceScheme ,应该是原作者手误写成了 forceSchema ,但是很多技术博主全是按照错误的复制过来的,在此鄙视一下。我倒是不反对技术博客搬运,只需要留下原作者署名或者转载地址就好了,但是既然是技术博客,你copy过来的东西它生不生效还是要验证一下吧,不要让错误继续传播吧。不发对方博客地址了,有好多呢,惹不起惹不起!!!

赤狐博客 - 对于互联网行业的胡诌八扯
请先登录后发表评论
  • 最新评论
  • 总共0条评论