Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取脚本标记';s innerHTML_Javascript_Html_Cross Domain_Innerhtml - Fatal编程技术网

Javascript 如何获取脚本标记';s innerHTML

Javascript 如何获取脚本标记';s innerHTML,javascript,html,cross-domain,innerhtml,Javascript,Html,Cross Domain,Innerhtml,好吧。。。我已经找了一个小时了。。。如何获取脚本标记的innerHTML?这是我一直在做的 <script type="text/javascript" src="http://www.google.com" id="externalScript"></script> <script type="text/javascript"> function getSource() {document.getElementById('externalScript').

好吧。。。我已经找了一个小时了。。。如何获取脚本标记的innerHTML?这是我一直在做的

<script type="text/javascript" src="http://www.google.com" id="externalScript"></script>
<script type="text/javascript">
function getSource()
 {document.getElementById('externalScript').innerHTML;
  }
</script>

函数getSource()
{document.getElementById('externalScript').innerHTML;
}

我一直在尝试用script标记调用另一个域的页面源的方法。我见过一个有效的例子,但我一生都找不到它…

你不能这么做。没有innerHTML…您所能做的就是下拉文件视图XMLHttpRequest以获取其内容…当然,这受到同源策略的限制,但脚本标记不是。对不起。

您不能这样做。如果可以的话,这将是一个巨大的安全问题

脚本内容可以包括任意数量的内容。考虑一下:从银行网站上的URL加载的脚本可能包含各种各样的东西,比如你的账号、余额和其他个人信息。该脚本将由您银行的普通页面加载,以执行他们想要执行的操作


现在,我是一个邪恶的黑客,我怀疑你可能是Biggo银行的客户。因此,在我自己的一个页面上,我为Biggo银行脚本添加了一个
标记。只有在存在有效的Biggo银行会话cookie时,脚本才能加载,但如果存在,该怎么办?如果您在另一个浏览器选项卡中登录Biggo Bank时访问我的黑客网站,会怎么样?现在,我自己的JavaScript代码可以读取该脚本的内容,您的钱现在归我:)

实际上,有一种方法可以获取内容,但这取决于远程服务器允许您获取没有有效头的文件,并且仍然会因为这些设置而失败很多时间。使用jQuery,因为这是我一天的结束,我已经出门了

$.get($('#externalScript').attr('src'), function(data) {
    alert(data);
});

您可以使用Html解析器:

jsoup»jsoup:Java HTML解析器 jsoup:javahtml解析器

jsoup是一个用于处理真实HTML的Java库。它使用最好的DOM、CSS和类似jquery的方法,为提取和操作数据提供了非常方便的API

请参阅:

我猜你想要两件事中的一件:

  • 使JavaScript文件成为全局文件(以便其他页面可以调用它)

  • 获取当前文件中的脚本

  • 这两个问题都可以通过将脚本移动到.js文件,然后使用标记来解决

    <script src="[path-to-file]"></script>
    
    
    
    是否要使用
    iframe
    ?你的第一行代码肯定不对<代码>用于包含JavaScript,而不是HTML。我不认为您可以将id属性与脚本标记一起使用,至少w3schools表示该脚本不支持任何标准属性@Olga我已经被告知好几次不要访问w3schools.com,因为缺乏可信度和安全性。@CS_-STEM我想我是误导了自己=)根据规范,全局属性至少在html5中是可以的。但我仍然不想通过id将我的脚本(javascripts)绑定到标记(script tag),当您需要移动这个或那个时,它将被证明是不合适的。@Olga我应该说不要在堆栈溢出时引用它,因为有些人不喜欢它,但我仍然鼓励将它用于快速标记引用和代码片段,因为有时它很有帮助。您可以获取一些脚本标记的内容,只是不是那些来自其他域的内容。更重要的是,除了通过XMLHttpRequest之外,我不知道如何获取它们的内容。你能详细说明一下吗?你可以在普通脚本标记上使用
    .innerHTML
    ,但可能只有在内容是内联的情况下-我必须使用它,但我知道这是可能的-例如查看jQuery模板的内容。好的,可以在内联脚本标记上使用。好奇……这是一个安全问题吗?您可以从其他域运行脚本…为什么能够将它们作为字符串读入并执行其他操作会有问题?(FWIW我不是在挑战你,我真的很好奇)因为脚本总是可能包含敏感信息。它可能不仅仅是简单的Javascript——服务器可能已经动态生成了它。但是读取您自己域的外部引用脚本文件并没有安全问题。这是一个肯定应该被允许的情况。-1像这样一个没有进一步解释的简单陈述是没有多大帮助的。老实说,我看不出安全问题在哪里(我们只是说读取标签的内容,而不是运行任何东西)。如果来自另一台服务器的脚本在您的页面上包含关于访问者的敏感数据(比如动态生成的密码),你可以在访问者不知道的情况下在网站上加载该脚本并捕获该数据(第三方脚本中的数据将为该访问者生成,因为它将使用该访问者的会话)。据我所知,我不知道这是如何工作的,使用$.get与其他任何操作一样容易受到同源策略的影响,这正是OP试图规避的。这与问题所带来的问题无关。