所以我尝试通过将此行添加到 .htaccess 中,将来自 cloudflare 的 https/SSL 添加到我的 laravel 应用程序中
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
它会自动将所有请求从 http 重定向到 https,但我遇到了新问题,我所有的 Assets 文件(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 加载 Assets
还有我完整的.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>
最佳答案
安全网站不允许混合协议(protocol)。一切都必须从安全服务器嵌入。浏览器将忽略/阻止 HTTPS 页面上的 HTTP 资源(具有不同程度的严格性)。
此阻止的原因是样式表和脚本等不安全的 HTTP 资源仍可能被攻击者修改并用于欺骗/劫持网站的安全部分。
如果样式表由您的服务器提供,则省略 URL 的协议(protocol)+主机部分,即代替 http://example.com/style.css使用/style.css 作为 URL,因此它适用于 HTTP 和 HTTPS。您还可以使用协议(protocol)相关 URL。
如果您必须有一个完整的 URL,则仅使用 https://... URL。
关于laravel 4.2 https 无法加载 Assets 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43800440/