Laravel 基础 url 显示非 SSL url()

Posted

技术标签:

【中文标题】Laravel 基础 url 显示非 SSL url()【英文标题】:Laravel base url display non SSL url() 【发布时间】:2021-01-25 03:58:25 【问题描述】:

我通过 .htaccess 启用强制 SSL。它工作正常并重定向到https://www.myappurl.com。在我的应用程序中,我使用 Ajax 来检索类别列表。启用 SSL 的类别列表未加载后。它显示时没有 SSL URL http://www.myappurl.com。我还在 .env 文件中将 APP_URL 更改为 https://www.myappurl.com

我的 .htaccaccess 代码

RewriteEngine On

    # ensure www.
    RewriteCond %HTTP_HOST !^www\. [NC]
    RewriteRule ^ https://www.%HTTP_HOST%REQUEST_URI [L,R=301] 

    # ensure https
    RewriteCond %HTTP:X-Forwarded-Proto !https
    RewriteCond %HTTPS off
    RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301]

Ajax 代码

 $.ajax(

        url: 'url('getsateslist')',
        type: "POST",
        dataType: "json",

【问题讨论】:

无需更改env.htaccess,改用secure_url() 助手 【参考方案1】:

看到您使用X-Forwarded-Proto 来确定协议,那么我假设您的站点位于终止 SSL 请求的代理之后,并且代理本身使用 HTTP 连接到您的站点,那么您需要 enable the "trusted proxies" middleware

你可以找到basic implementation on github(它确实随 Laravel 样板提供),但你也可以实现自己的。

例如,如果您使用 AWS 负载均衡器,您可以这样做:

<?php

namespace App\Http\Middleware;

use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;

class TrustProxies extends Middleware

    protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;

这使用了包TrustedProxy,这是一个 Laravel 依赖项,因此可以在那里找到更多信息。

【讨论】:

【参考方案2】:

secure_url() 帮助函数生成一个完全限定的 HTTPS URL 到给定路径,更改:

url: ' url('getsateslist') ',

url: ' secure_url('getsateslist') ',

见[secure_url()]here的官方文档

【讨论】:

以上是关于Laravel 基础 url 显示非 SSL url()的主要内容,如果未能解决你的问题,请参考以下文章

php curl抓取淘宝页面显示空白页

如何检查SSL证书安装正确

如何使用index.php生成Laravel 4 URL?

Guzzle - Laravel。如何使用 x-www-form-url-encoded 发出请求

如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?

使用 iframe 在 SSL 站点上显示具有绝对 URL 的非 SSL 内容 [重复]