我们有很多ASP.NET代码,其客户端URL引用外部脚本和资源,如图所示。显然这是一个Facebook应用程序,但这与更一般的问题并不真正相关:
在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>
<% } %>
[snip]
<a href="http://www.microsoft.com/about.aspx">Microsoft About Page</a>
<a href="http://www.example.com/">Example Page</a>
[snip]
<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">
[etc ...]
答案 0 :(得分:2)
只需将“http://”替换为“//” 应该没问题
答案 1 :(得分:0)
只需启动没有指定协议的链接 - 协议将从页面继承。
<script type='text/javascript' src="//cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js">
这是需要由http
和https
提供服务的网页上的常用技巧。
答案 2 :(得分:0)
我喜欢Google使用它的库的方法,例如Google Analytics:
(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托管,则它可以正常工作。