我们正在使用 URL 重写模块来强制我们网站的登录部分通过 https,同时将所有其他部分保留在 http。这是我们添加的两条规则
<rule name="Others Force HTTP" enabled="true" stopProcessing="true">
<match url="(((.*)/LogOn)|((.*)/Content(.*))|((.*)/Images(.*))|((.*)/Scripts(.*)))" negate="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^ON$" />
</conditions>
<action type="Redirect" url="http://{SERVER_NAME}{REQUEST_URI}" redirectType="Permanent" />
</rule>
<rule name="Force on SSL" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{REQUEST_URI}" pattern="^/users/account/LogOn(\?.*)*$" />
</conditions>
<action type="Redirect" url="https://{SERVER_NAME}{PATH_INFO}" redirectType="Permanent" />
</rule>
但是,使用这些规则,Internet Explorer 会提示某些内容未通过安全连接传递,而 Google chrome 不会获取任何样式表、图像等。
Fiddler 表明,Web 服务器正在通过 HTTP 将所有请求重定向到 /Content /Images 等,根据第一条规则,IIS 服务器不应该这样做。
我们正在竭尽全力试图解决这个问题。一些帮助将不胜感激。