在我的Site.Master中构建MVC 2.0网站并使用内容分发网络(CDN)。我正在使用以下CDN:
所有这些CDN都是使用 http://
发送的我的网站目前支持SSL和非SSL页面。 导航到启用SSL的页面时,我收到错误,因为CDN链接到HTTP://
虽然我知道您可以使用SSL版本的CDN,但我的问题更像是:
由于我的非SSL和SSL网页共享相同 * Site.Master *我该怎么办? 我是否应该只为SSL和非SSL页面启用SSL启用版本? 或者我应该做一些“if ... else”?
任何这些方法的任何优点或缺点?
由于
答案 0 :(得分:6)
对不起,这是真正的答案人。请继续阅读以启发自己。
忘记做你过去为协议检查BS所做的if else垃圾。
对于支持SSL的CDN(如Amazon Cloudfront或Microsoft CDN),请完全省略该协议。是的,我说了。完全省略协议,如果不测试则停止执行。我为我的所有电子商务网站都这样做。这么多人不知道的漂亮的小事实是省略协议强制URL使用网站URL使用的任何协议,所以如果你在SSL,bam,它使用SSL等。这实际上是一个web标准,所有浏览器实现这一点。
例如,我的所有CDN图像资源和静态文件等都使用如下URL:
<img src="//d34ic8my8k87as.cloudfront.net/img/web/success-icon.png" />
如果你在互联网上阅读RFC和规范,你会发现一些隐藏在你鼻子底下的东西。您可以在某些网站上看到我的个人资料。希望有所帮助。
答案 1 :(得分:-1)
if
... else
看起来是最可行的解决方案,但您可能希望始终使用SSL而忘记所有内容。
有关具有混合安全性内容的页面的警告是合理的,因为脚本可能会在不安全的连接上被利用。想想带有黑客脚本的银行网站,该脚本会将您的帐户历史记录的HTML标记转发给恶意用户。
使用if
- else
语句来检查哪个协议字符串会预先添加到外部资源的URL中,甚至没有性能(检查以微秒为单位完成......)然而,关于性能,总是使用SSL的缺点,虽然不需要,但是因为浏览器必须建立安全连接(SSL / TLS握手)并执行大量不必要的加密操作。
我会选择if
- else
,因为您使用母版页,所以您的代码中有更少的地方可以修改!