确定用于加载javascript的协议

时间:2011-06-30 08:01:05

标签: javascript https

我有javascript文件,位于一个域上,例如: http://mydomain.com/script.js

某些页面(来自其他网域)包含使用SCRIPT标记的javascript。他们可以通过http或https

包含它
<script src="http://mydomain.com/script.js"></script>
or
<script src="https://mydomain.com/script.js"></script>

他们也可以使用3rdparty iframe包含我的脚本,例如:

<iframe src="http://3rdparty.com/frame.php">

其中http://3rdparty.com/frame.php输出

<script src="http://mydomain.com/script.js"></script>
or
<script src="https://mydomain.com/script.js"></script>

我只能在mydomain.com上编辑静态javascript文件script.js.

如何检测用于加载javascript的协议(https://mydomain.com/script.js或http://mydomain.com/script.js)?

3 个答案:

答案 0 :(得分:19)

您可以使用protocol relative URL:

<script src="//mydomain.com/script.js"></script>

答案 1 :(得分:4)

您可以使用:

document.location.protocol + "//mydomain.com/script.js"

答案 2 :(得分:1)

我不相信您有能力在代码中识别它是如何加载的。我能提出的最佳建议是将http和https指向不同的位置(即不同的站点),并在代码中包含指示哪一个被拾取的内容。

  

var protocol ='http'

  

var protocol ='https'

它确实意味着维护两个文件和两个站点。

ETA:我认为James Wiseman有答案,但当然这只会返回PAGE的协议,而不是SCRIPT。如果你知道这些是相关的,那就行了(通常https加载在https页面和vv上)。但它不是确定的。

如果你能确信hte页面上的协议与脚本上的协议相同,那么这是一个很好的解决方案。