我有以下元素:
<script type="text/javascript" src="https://cdn.example.com/js_file.js"></script>
在这种情况下,站点是HTTPS,但站点也可能只是HTTP。(JS文件在另一个域中。)为了方便起见,我想知道是否可以这样做:
<script type="text/javascript" src="//cdn.example.com/js_file.js"></script>
我想知道是否可以删除http:或https:?
它似乎在我测试过的所有地方都有效,但是否有任何情况下它不起作用?
这的确是正确的,正如其他答案所陈述的那样。但是你应该注意,一些网络爬虫会通过在你的服务器上请求它们来设置404,就像一个本地URL一样。(他们忽略了双斜杠,将其视为单斜杠)。
你可能想要在你的web服务器上设置一个规则来捕捉这些并重定向它们。
例如,在Nginx中,你可以添加如下内容:
location ~* /(?<redirect_domain>((([a-z]|[0-9]|\-)+)\.)+([a-z])+)/(?<redirect_path>.*) {
return 301 $scheme:/$redirect_domain/$redirect_path;
}
但是要注意,如果在uri中使用句点,则需要增加特异性,否则最终会将这些页面重定向到不存在的域。
而且,对于每个查询来说,这是一个相当庞大的正则表达式——在我看来,对于大多数兼容的浏览器来说,用404来惩罚不兼容的浏览器是值得的。