【发布时间】:2011-12-08 18:51:07
【问题描述】:
我有以下 .htaccess 文件,它可以将 HTTP 页面重定向到 HTTPS,这是可以做到的——但是,它破坏了 Firefox 和 IE 中的安全性。它与代码的#FORCE HTTP 部分有一些东西,因为当我删除该部分并只保留#FORCE HTTPS 部分时,安全性在所有浏览器中都可以正常工作。
我可以看出正在发生一些事情,因为在页面加载时,它会显示经过验证的锁定符号一瞬间,然后它就完全消失了。我的意思是完全;它甚至不显示坏掉的锁图标。
请注意,执行此操作时 url 仍然是 https://。因此,即使我手动输入 https://,它也会这样做。
# FORCE HTTP
RewriteCond %{REQUEST_URI} !^(.*)/(donate|debit)/?$
RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC]
RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(.*)$ http://www.domain.org/$1 [R=301,NC,L]
# FORCE HTTPS
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} ^(.*)/(donate|debit)/?$
RewriteRule ^(.*)$ https://www.domain.org/$1 [R=301,NC,L]
【问题讨论】:
-
如果您捕获 HTTP 流量,例如使用 Fiddler,是否有任何 301 重定向,如果有,适用于哪些资源?
-
如果你只是注释掉会发生什么: RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC] 我想知道是否正在加载不安全的资源安全页面,这可能会导致问题。同样在您的 html 中,标题中是否有任何
标记? -
我在 Fiddler 中看不到任何 301。一切都是通过 443 的 HTTPS 或 HTTP 隧道。
RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC]代码保护 HTTPS 页面不使其资源更改为 HTTP。 -
我知道重定向的 HTTP 部分是罪魁祸首,但是......只是不知道在哪里或如何。
-
如果在安全页面中,您从不安全 (http) 连接加载 javascript、css 或图像,浏览器将移除挂锁。这是因为并非所有流量都是安全的,信息可能会泄漏。我的猜测是您有一些与您的规则不匹配的
.jpg文件,因为它只匹配.jpeg文件。
标签: http .htaccess mod-rewrite https