确定用于加载javascript的协议

Determine protocol used to load javascript

本文关键字:协议 javascript 加载 用于      更新时间:2023-09-26

我有一个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>

此外,他们还可以使用第三方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)?

您可以使用与协议相关的URL:

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

您可以使用这个:

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

我认为您没有任何能力在代码中识别它是如何加载的。我能想到的最好的建议是让http和https指向不同的位置(即不同的网站),并在代码中有一些内容来指示正在使用哪一个。

var协议="http"

var协议="http"

这意味着要维护两个文件和两个站点。

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

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