我使用此代码获取完整的URL:
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
Run Code Online (Sandbox Code Playgroud)
问题是我在我.htaccess身上使用了一些掩码,所以我们在URL中看到的并不总是文件的真实路径.
我需要的是获取URL,URL中写的内容,仅此而已 - 完整的URL.
我需要了解它在Web浏览器的导航栏中的显示方式,而不是服务器上文件的真实路径.
我有以下元素:
<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获得.
这是完全跨浏览器兼容吗?还有其他警告吗?
可能重复:
URI以两个斜杠开头......它们的行为如何?
绝对URL省略协议(方案),以便将当前页面的一个简写保存
为//用于脚本和链接标记?有人看过/使用过吗?
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
为什么URL以两个正斜杠开头?这是速记http://吗?
方案相对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 ,它会起作用吗?
可能重复:
在<script src ="...">中用//替换是否有效?
绝对URL省略协议(方案)以保留当前页面之一
我在谷歌找不到任何相关内容 - 很难找到关于"//":)的内容
无论如何请告诉我,哪些浏览器支持"//"而不是"http://"和"https://"?我想用它来包括图像,脚本,样式等.但是它安全吗?是否有不支持此功能的浏览器,我需要提供协议?
可能重复:
在<script src ="...">中用//替换是否有效?
绝对URL省略协议(方案)以保留当前页面之一
在Javascript中使用//www.example.com自动选择http/https协议
我正在查看来自facebook的一些示例代码,我看到:
<script src="//connect.facebook.net/en_US/all.js"></script>
Run Code Online (Sandbox Code Playgroud)
他们使用//而不是http://- 这是我不知道的奇特吗?
可能重复:
绝对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)
他们为什么这样做呢?
为什么使用<link href="//something.com/style.css" rel="stylesheet">而不是使用http://或https://在域名之前使用?
如果我们使用href=//它会改变链接?就像在SSL模式下它会自动更改为https://?
我不明白为什么我看一下CDN的以下网站,URL的开头是双"//".我在JQuery和Bootstrap上看过这个.是由人来放http://或https://?
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud) 这里有jsfiddle CSS,Javascript和HTML的三个部分所以应该有一种方法可以有一个HTML文件,其中有三个部分,这里说Drop CSS代码,Drop HTML Here和Drop Javascript here.它还没有用,但目前我有
<html>
<head>
<title>Some Title</title>
<style type="text/css" media="screen">
<!-- CSS Section From JSfiddle Goes Here -->
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"> </script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Javascript Section From JSfiddle Goes Here
});
</script>
</head>
<body>
<!-- HTML Section From JSfiddle Goes Here -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这似乎是一件容易的事情,如果它可以自动化,或者可以吗?似乎很多人都发现JSfiddle的例子没有用,因为JSfiddle有一些神奇的东西他们没有与我们分享.
我想我明白发生了什么,但谷歌搜索时没有找到任何确定的东西.在这样的代码中:
// talking about the src attribute
<script type="text/javascript" src="//use.typekit.net/%kitid%.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我习惯了http://在那里.当我在http服务器上调用此页面时,它会对资源进行常规HTTP请求,因此我假设这是http://的快捷方式.我猜这与不知道您所在的页面是否要使用https://或http://有关?有任何关于这种做法的信息的文章或任何内容?