【问题标题】:Determine protocol used to load javascript确定用于加载 javascript 的协议
【发布时间】:2011-06-30 08:01:04
【问题描述】:

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

【问题讨论】:

标签: javascript https


【解决方案1】:

您可以使用protocol relative URL:

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

【讨论】:

  • 我不需要包含我的文件。我的文件被其他网站收录,我只需要知道他们使用什么协议来收录我的文件
【解决方案2】:

你可以用这个:

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

【讨论】:

    【解决方案3】:

    我不相信您有任何能力在代码中识别它是如何加载的。我能想到的最好的建议是让 http 和 https 指向不同的位置(即不同的站点),并在代码中包含一些内容来指示正在拾取哪个位置。

    var 协议='http'

    var 协议='https'

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 2011-04-06
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多