Javascript检测从哪个主机加载

时间:2013-10-19 16:46:30

标签: javascript ajax cross-domain detection hostname

我有一个我正在研究的Javascript库。它可以是自托管的,也可以从其他服务器运行。该脚本进行了许多AJAX调用,首选方法是将POST请求发送到与包含页面相同的主机。为了允许跨域调用,它还支持JSONP,但这限制了可以发送的数据量(~2K以安全地适应大多数现代浏览器的URL长度限制)。

显然,包含脚本的用户知道他们从哪里获取它,并且可以根据需要手动选择JSONP,但为了简化事情,我想在脚本本身中检测脚本是否已加载来自与包含或不包含的页面相同的主机。

我能够使用jQuery获取脚本元素但是执行$('script')。attr('src')只返回一个相对路径(例如“/js/my-script.js”而不是“ http://hostname.com/js/my-script.js“)即使它是从不同的主机加载的。

这是可能的吗?如果可以的话,我该怎么做呢?

提前致谢。

2 个答案:

答案 0 :(得分:3)

不要使用JSONP,请使用CORS标头。

但如果你真的想做JS检查,请使用var t = $('script')[0].outerHTML

对我的页面的影响: [20:43:34.865] "<script src="http://www.google-analytics.com/ga.js" async="" type="text/javascript"></script>"

答案 1 :(得分:-1)

检查location.host应该可以解决问题。