我有以下元素:
<script type="text/javascript" src="https://cdn.example.com/js_file.js"></script>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该站点是HTTPS,但该站点也可能只是HTTP.(JS文件在另一个域上.)我想知道为方便起见,执行以下操作是否有效:
<script type="text/javascript" src="//cdn.example.com/js_file.js"></script>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有效删除http:或https:?
它似乎适用于我测试过的所有地方,但是有什么情况下它不起作用吗?
戴夫沃德说,
它并不完全是轻量级读取,但RFC 3986的4.2节提供了完全限定协议(HTTP或HTTPS)的完全限定URL.当省略URL的协议时,浏览器将使用基础文档的协议.
简而言之,这些"无协议"URL允许这样的引用在您尝试使用的每个浏览器中工作:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js一开始看起来很奇怪,但这种"无协议"URL是引用通过HTTP和HTTPS提供的第三方内容的最佳方式.
这肯定会解决我们在HTTP页面上看到的一堆混合内容错误 - 假设我们的资产可通过HTTP和HTTPS获得.
这是完全跨浏览器兼容吗?还有其他警告吗?
最近我看到像这样工作的代码块:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
根据RFC 2396(URI语法)和RFC 2616(HTTP 1.1),这些以两个斜杠开头的URI是有效的,但不幸的是,RFC并没有真正解释它们.
任何人都可以指向一个解释浏览器将如何/应该/如何处理这些URI的资源?
我看到了//somepage.com/resourceurl格式.例如:
<img src="//remotesite.com/image1.jpg" />
Run Code Online (Sandbox Code Playgroud)
这一点是,如果当前页面(定义img标签的页面)正在使用http,则通过http进行对远程站点的请求.如果它是https - 它是https.这消除了浏览器未完全加密页面的警告.
我的问题是 - 这种URL格式是否可以安全地用于所有浏览器.它是一个标准吗?
方案相对URL(网络路径引用)是我刚刚发现的 - 你没有指定URL的方案,它从当前上下文中选择它.
例如:
如果当前方案是HTTPS或不是,则<img src="//domain.com/img.png" />解析为.https://domain.com/img.pnghttp://domain.com/img.png
这似乎是一种非常简单的方法来解决在SSL页面上调用外部脚本或图像的麻烦问题,而不会引起页面上某些内容不安全的可怕错误.
好处似乎很明显,但我似乎无法找到的是关于此的大量信息,并且想知道是否有人有任何关于方案相对URL(好或坏)的经验或参考?
虽然我试图发现是否有任何浏览器导致问题(我已经成功使用IE6-8,Chrome和Firefox),我也有兴趣了解是否有任何人有使用此功能的不同经验语言.例如,如果你Response.Redirect在ASP中发布一个方案相对URL ,它会起作用吗?
越来越多的人开始注意到网站源代码中的链接以两个斜线开头.例如:
<a href="//example.com/1.png">Image</a>
Run Code Online (Sandbox Code Playgroud)
为什么这样?
是否有人知道使用图像源的协议相对URL来防止混合内容安全警告是否有问题.
例如,链接图像,如:
<img src="//domain.com/img.jpg" />
Run Code Online (Sandbox Code Playgroud)
代替:
<img src="http://domain.com/img.jpg" />
or
<img src="https//domain.com/img.jpg" />
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我没有看到任何暗示这是错误的,但我不确定它是否会产生问题的边缘情况.
编辑我已经看到它在使用PHP的getimagesize函数时抛出错误.
在HTTPS页面上itemtype使用HTTP值(http://schema.org/WebPage)静态设置Microdata的属性是否正确,或者我是否需要https://schema.org/WebPage在所有页面上使用HTTPS值()?
由于站点的HTTP和HTTPS版本都可用,我可以将其设置为//schema.org/WebPage或不是吗?
可能重复:
绝对URL省略协议(方案)以保留当前页面之一
我最近注意到"like"和"tweet"按钮的嵌入代码不包含http协议.例如:
<script type="text/javascript" src="//platform.twitter.com/widgets.js"></script>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=555";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
Run Code Online (Sandbox Code Playgroud)
他们为什么这样做呢?
我在PHP手册中注明了以下内容:
HTTP/1.1需要绝对URI作为»Location:包括方案,主机名和绝对路径的参数,但某些客户端接受相对URI.
为了方便用户优先选择HTTPS无处不在的连接,我想改变我的PHP脚本中的标题:
header("Location: http://www.example.com/"); 至 header("Location: //www.example.com/");
我已经测试了上面的代码在我的firefox浏览器上工作,但我不确定这是否是可行的事情.或者我是否应该从$_SERVER变量中提取协议并将其放入.
http ×7
html ×6
url ×5
https ×4
uri ×2
browser ×1
http-headers ×1
hyperlink ×1
image ×1
javascript ×1
microdata ×1
php ×1
schema.org ×1