laravel 4.2 https无法加载资产文件

时间:2017-05-05 08:46:58

标签: laravel .htaccess ssl blade

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

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

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

  

混合内容:' https://sm-trust.com/'是通过HTTPS加载的,但是请求了一个不安全的样式表' http://sm-trust.com/css/bootstrap.min.css'。此请求已被阻止;内容必须通过HTTPS提供。

我正在使用刀片来包含我所有的css,js和图像

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

如何解决?所以它会自动加载https的资产

这里也是我完整的.htaccess

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [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 ^(.*)/$ /$1 [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>

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

这种阻止的原因是攻击者仍然可以修改样式表和脚本等不安全的HTTP资源,并用来欺骗/劫持站点的安全部分。

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

如果您必须拥有一个完整的网址,请仅使用https:// ...网址。