https 下分页生成的链接 http 解决方法

首先我们获取一下当前的网络连接是不是HTTPS

use \Illuminate\Http\Request;
.....
$request->getScheme();
......

跟踪代码我们可以看到 $this->isSecure()

/*
*
 * Gets the request's scheme.
 *
 * @return string
 */
 public function getScheme()
{
  return $this->isSecure() ? 'https' : 'http';
}

继续跟踪代码 在isSecure()中我们可以得到自己的答案

/*
*
*/
public function isSecure()
{
    //首先去检查访问客户端ip是否在白名单里 可以通过setTrustedProxies()进行设置
    // 这里有个坑,isFromTrustedProxy()验证的是客户端ip,只能在局域网中使用,如果你需要局域网外使用就不适用
    if ($this->isFromTrustedProxy()
        && $proto = $this->getTrustedValues(self::HEADER_X_FORWARDED_PROTO)) {
        return \in_array(strtolower($proto[0]), ['https', 'on', 'ssl', '1'], true);
    }
    // 取巧的方式就是 我们可以手动去设置变量HTTPS $this->server->set('HTTPS', 'on');
    $https = $this->server->get('HTTPS');

    return !empty($https) && 'off' !== strtolower($https);
}

从结果来看,我这边使用负载均衡无法通过$this->isFromTrustedProxy() 就意味着我们需要自己去设置全局属性
AppServiceProvider

public function boot()
{
    if ($this->app->environment('production')) {
        app(Request::class)->server->set('HTTPS', 'on');
    }
}

这里只是提供我的解决方法,可能使用有不恰当。
如果有更好的方法,请留言补充

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

其实 修改 AppServiceProvider.php 应该就行

public function boot()
{
     $this->app['request']->server->set('HTTPS',true);
}
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!