所以我尝试通过将此行添加到.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>
答案 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:// ...网址。