ASP.NET MVC中启用SSL的Content Delivery Network

时间:2010-12-06 18:57:07

标签: jquery asp.net-mvc asp.net-mvc-2 ssl

在我的Site.Master中构建MVC 2.0网站并使用内容分发网络(CDN)。我正在使用以下CDN:

  • Yahoo的reset-fonts-grids.css
  • jQuery 1.4.2
  • jQuery验证

所有这些CDN都是使用 http://

发送的

我的网站目前支持SSL和非SSL页面。 导航到启用SSL的页面时,我收到错误,因为CDN链接到HTTP://

虽然我知道您可以使用SSL版本的CDN,但我的问题更像是:

由于我的非SSL和SSL网页共享相同 * Site.Master *我该怎么办? 我是否应该只为SSL和非SSL页面启用SSL启用版本? 或者我应该做一些“if ... else”?

任何这些方法的任何优点或缺点?

由于

2 个答案:

答案 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,因为您使用母版页,所以您的代码中有更少的地方可以修改!