确定用于加载javascript的协议
Determine protocol used to load javascript
我有一个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上)。但这并不是决定性的。
如果您能够确信页面上的协议与脚本上的协议相同,那么这是一个很好的解决方案。
相关文章:
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何通过JavaScript获取HTTP协议版本
- Chrome扩展:不安全的JavaScript尝试访问具有URL的框架域、协议和端口必须匹配
- JavaScript:我可以得到完整的url,包括域名、文件名和协议吗
- 自定义 URL 协议可以调用 JavaScript 函数吗?
- 检查弹出窗口是否已重定向回 JavaScript 中的打开程序的域/端口/协议
- JavaScript - 检测外部站点协议 - 客户端
- 下载大文件>1GB使用http协议、java和javascript
- javascript查找协议,域,加上src标记中带有regexp的第一个斜杠,替换为空字符串
- 没有协议的Javascript引用-(以//开头)
- 如何使用Javascript postMessage将不同协议的iframe外部的元素作为目标
- 外部链接的javascript文件和文件协议
- 为什么是"javascript:"粘贴时从URL栏中剥离的伪协议
- 附加到javascript中的协议对象
- Javascript regex解析url没有协议
- 检查浏览器是否支持使用JavaScript的自定义协议
- 为什么javascript伪协议不工作?
- 通过javascript在父窗口中跨域和协议访问子窗口的元素
- JavaScript的协议缓冲区
- 从Applet调用JS:MalformedURLException:未知协议:javascript