2011-04-28 145 views
1

如图所示,我们有很多带有客户端URL的引用外部脚本和资源的ASP.NET代码。显然,这是一个Facebook应用程序,但是这并不是真正相关的更普遍的问题:将HTTP/HTTPS与网页协议对齐?

什么是聪明的方式来切换HTTP和HTTPS之间的所有脚本和链路协议与由页面的用户选择的协议一致?

的用户可在不安全模式,

http://apps.facebook.com/app1

或在安全模式下冲浪

HTTPS://apps.facebook.com/app1


的页面内容样品:

<script type='text/javascript' src="http://cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js"> 
    </script> 

<% if (IsFrench) { %> 
     <script src="http://connect.facebook.net/fr_CA/all.js"></script> 
<% } else { %> 
     <script src="http://connect.facebook.net/en_US/all.js"></script> 
<% } %> 

[剪断]

<a href="http://www.microsoft.com/about.aspx">Microsoft About Page</a> 
<a href="http://www.example.com/">Example Page</a> 

[剪断]

<script type="text/javascript" language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" 
     type="text/javascript"> 
    </script> 

    <script type='text/javascript' src="http://cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js"> 

[等等]

回答

2

只需更换的 “http://” 以 “//” 应该罚款

+0

你是第一个平局。谢谢。这些年来,我没有意识到存在简单的机制。 – 2011-04-28 19:37:47

+0

有没有人知道使用无协议URL的浏览器兼容性问题,还是相当安全? – 2011-04-28 19:49:57

+0

兼容性和RFC信息在这里回答:http://stackoverflow.com/questions/550038/is-it-valid-to-replace-http-with-in-a-script-src-http/550073#550073 – 2011-04-28 20:06:12

0

只需启动没有指定协议的链接 - 协议将从页面继承。

<script type='text/javascript' src="//cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js"> 

这是需要双方httphttps送达页面的常用技术。

+0

整洁,这是非常干净的 – 2011-04-28 19:33:11

0

我想,谷歌需要与它的库,如谷歌分析的方法:

(function() { 
      var ga = document.createElement('script'); 
ga.type = 'text/javascript'; 
ga.async = true; 
      ga.src = ('https:' == document.location.protocol ? 
       'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 

      var s = document.getElementsByTagName('script')[0]; 
      s.parentNode.insertBefore(ga, s); 
     })(); 

的检查都是在客户端完成。如果您的第三方脚本在SSL和非SSL之间没有在相同的URL上托管,则它可以工作。

+0

看起来谷歌在这方面的代码,因为它们随着协议而变化的子域名。我可以在不改变我的场景中的域名的情况下离开,因此可能不会使用此域名,但是我对使用Google足够好的内容没有任何问题。谢谢。 – 2011-04-28 19:40:22