laravel 4.2 https 无法加载资产文件

laravel 4.2 https can't load asset file

所以我尝试通过将此行添加到 .htaccess

中,将 https/SSL 从 cloudflare 添加到我的 laravel 应用程序中
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/ [R=301,L]

它会自动将所有请求从 http 重定向到 https,但我遇到了新问题,我所有的资产文件(css、js 和图像)都是 http,所以它拒绝加载,我得到了这个控制台错误

Mixed Content: The page at 'https://sm-trust.com/' was loaded over HTTPS, but requested an insecure stylesheet 'http://sm-trust.com/css/bootstrap.min.css'. This request has been blocked; the content must be served over HTTPS.

我正在使用 blade 来包含我所有的 css、js 和图像

{{ HTML::style('css/bootstrap.min.css', array(), true) }}

如何解决?所以它会使用 https

自动加载资产

还有我完整的 .htaccess

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/ [R=301,L]

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ / [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

基于Laravel的documentation,你可以这样做

echo link_to_asset('foo/bar.zip', $title, $attributes = array(), $secure = null);

第四个参数允许您加载安全资产。

安全网站不允许混合协议。一切都必须从安全服务器嵌入。浏览器将 ignore/block HTTPS 页面上的 HTTP 资源(严格程度不同)。

此阻止的原因是不安全的 HTTP 资源(如样式表和脚本)仍然可以被攻击者修改并用于 spoof/hijack 保护网站的某些部分。

如果样式表由您的服务器提供,则省略 URL 的协议+主机部分,即不使用 http://example.com/style.css,而是使用 /style.css 作为 URL ,因此它适用于 HTTP 和 HTTPS。您还可以使用协议相关 URLs.

如果你必须有一个完整的 URL,那么只使用 https://... URLs。