JavaScript不能读取script标签src文件内容

通常我们页面中创建script标签时要么src引入外部js文件:

?

1

<script type="text/javascript" src="jquery-1.9.1.min.js"></script>

要么直接在标签内写内容:

?

1
2
3

<script type="text">
这里是script标签里的内容
</script>

script标签有一个属性type,默认值:text/javascript,例如你直接声明一个script标签,如果不声明type标签就默认为js文档。

?

1
2
3
4
5
6
7
8
9
10

<script>
    var a = 50;
  
</script>
  
<script type="text/javascript">
  
    alert(a); // 50
  
</script>

当然,你也可以指定它就是纯文本:

?

1
2
3
4
5
6
7

<script type="text">
    var a = 50;
</script>
  
<script type="text/javascript">
    alert(a); // 提示没有定义
</script>

因为第一个script标签type类型为text,浏览器自然就不会把标签里的内容当做js文档处理,也就不会声明a变量。
当然,如果的script标签type=text的时候,标签里无论写什么内容都不会报js语法错误:

?

1
2
3

<script>
这里是script标签内容,没有指定type=text,默认浏览器当做js文档来处理于是会报语法错误
</script>

声明为type=text类型,报错消失:

?

1
2
3

<script type="text">
这里是script标签内容,没有指定type=text,默认浏览器当做js文档来处理于是会报语法错误
</script>

 

script理论上也是一个标签,既然是标签那我们就可以获取它的DOM节点:

即使是你声明的script标签type=text/javascript 类型,也能获取获取:

?

1
2
3
4
5
6
7

<script type="text/javascript">
// 这里是单行注释
/**
 * 这里是多行注释
 */
var name = "lizhong";
</script>

以上,我们都可以通过dom节点获取script的内容,但无法获取src指定文件的内容。比如:

?

1
2
3
4
5
6
7

<script type="text/javascript" src="a.js">
// 这里是单行注释
/**
 * 这里是多行注释
 */
var name = "lizhong";
</script>

a.js文件内容:

?

1

var dec = "这里是a.js文件内容";

执行:

我们发现居然还是打印页面上声明script时往里写的内容,即使我像正常情况声明script标签:

?

1

<script type="text/javascript" src="a.js"></script>

或者使用type=text类型:

?

1

<script type="text" src="a.js"></script>

结果还是获取不到a.js的内容:

然而有趣的是,FireFox的FireBug工具显示script标签里的内容就是src指定的文件内容:

但你通过dom节点的innerHTML属性依然读到的内容只是在页面标签里实际写入的内容。
这就引发了一个问题:
假如要是能动态读取script标签src指向路径文件的内容,那么就会非常的不安全。这样,我就会轻易的获取到所有登录我站点用户电脑中的所有文件(至少文本文件的内容)。
如我生成这么一个标签,假定是window平台用户访问我站点,并且拥有D磁盘路径:

?

1

<script type="text" src="file:///D:/"></script>

它能把我D盘下所有文件目录都能获取到:

然后获取这个script节点内容,经过字符串正则处理读到一大堆文件名,得到文件名后就容易获取文件的内容了。

可惜,大多浏览器都堵住了这个漏洞,别做梦了!

时间: 2024-10-28 03:30:43

JavaScript不能读取script标签src文件内容的相关文章

javascript中获取元素标签中间的内容的实现方法_javascript技巧

使用ajax,通过会把服务器端响应获取到reponseText或者reponseXML中的信息,以某种方法动态的写到div和span标记中,这样,可以在无刷新的情况下,改变页面内容的显示. 通过javascript进行动态的修改,修改的方法有两种: 1. 一种是使用html的每个标记的innerHTML属性,使用此属性,只要为它提供一个有意义的html代码片段,那么html解释器就可以将其中的内容进行解释,并显示在页面上,使用这种方式比较简单,每次修改前不需要先把原来的内容清除掉,而可以直接进行

Android 读取assets和raw文件内容实例代码_Android

android之文件操作--读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)       2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android

Android 读取assets和raw文件内容实例代码

android之文件操作--读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹) 2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

c#关于读取并显示某文件内容的代码块。

问题描述 本人是c#新手菜鸟,做了一个界面.1.其中一个界面有两个combobox下拉列表,本人想根据两个下拉列表的选择项,当点击执行botton时,从存有很多图片的某文件夹中读取相应的图片,并在新建的一个窗口显示出来.(本人对代码一点都不会)2.还有一个是一个textBox,也是想根据textbox输入的内容,从文件夹中调取对应的图片. 解决方案 解决方案二:引用楼主larryfym的回复: (本人对代码一点都不会) 那应该用什么语言和你交流?解决方案三:不管怎么样,最终都是通过File.Ex

读取Pdm文件内容(含源码)

  Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pdm文件,如下图所示   好了,抛砖已完成.下面要引玉了,如果要读取下图这个pdm文件内容,网上的若干代码就不行了   最后,说下重点,已经我的加工整理,下面提供代码里可以读取上述这种复制格式的pdm文件.调用也非常简单.如下所示 string pdmFileFullName = @"E:\pdm

你真的了解html吗?--之script标签介绍

一.属性: src:该属性指定外部JavaScript文件的地址,可以跨域.如果指定了该属性,那么script标签中的内容就会被忽略.   type:指定所使用的脚本语言,可以覆盖默认的脚本语言(即在<META http-equiv="Content-Script-Type" content="type">中定义的脚本类型 )开发者必须指定该属性,该属性没有默认值.   language:(不赞成使用),指定script标签的内容所使用的脚本语言,该属性

通过Javascript读取本地Excel文件内容的代码示例

 这篇文章主要介绍了通过Javascript读取本地Excel文件内容的代码示例,但需要一定的条件才可以使用js操作本地文件,需要的朋友参考下吧 读取本地Excel文件内容的Javascript代码:    代码如下: <script type="text/javascript"> function read_excel(){       var filePath="D:abcd9.com.xls"; //要读取的xls     var sheet_id

通过Javascript读取本地Excel文件内容的代码示例_javascript技巧

读取本地Excel文件内容的Javascript代码: 复制代码 代码如下: <script type="text/javascript">function read_excel(){     var filePath="D:\abcd9.com.xls"; //要读取的xls    var sheet_id=2; //读取第2个表    var row_start=3; //从第3行开始读取    var tempStr='';    try{    

java实现利用String类的简单方法读取xml文件中某个标签中的内容_java

1.利用String类提供的indexOf()和substring()快速的获得某个文件中的特定内容 public static void main(String[] args) { // 测试某个词出现的位置 String reqMessage = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" + "<in>" + "<head&g