为什么js不能操作本地文件
1个回答
展开全部
JS是浏览器脚本文件,实现页面内容的计算、显示和交互。例如点击按钮弹出一个详细信息,播放音频,展开二三级菜单,显示更多内容及滚动显示轮播等等。页面样式和弱交互一般CSS可以实现,但复杂的就需要JS来实现。随着JS的发展,JS在浏览器端能实现的功能越来越多,例如经典的JQuery,最近几年发展起来的React、Angularjs和Vue.js,这些JS框架给前端开发带来了极大的便利,可以非常高效的实现复杂的页面数据调用和交互,网页的功能也越来越强大,甚至出现了非常多的网页运用,例如百度脑图、微信图文编辑器等等在线工具。
但是,所有这些功能仅限于浏览器端,JS依赖浏览器来解释执行。浏览器作为安装到系统中的原生软件,是有权限操作本地文件的,比如浏览器自动更新、上传文件和下载文件。但是,如果把操作本地文件的权限开放给JS,就意味着,开发者只需要写一个JS,放到某个地址,用户打开这个链接,浏览器执行JS,就开始操作本地文件。于是,显而易见,只需要一个JS就可以做以下事情:自动上传用户的文件、资料,删除、修改用户的文件、软件,自动下载文件、软件甚至木马到用户本地。
计算机安全问题最大的隐患就是互联网,我们连网站的安全都无法完全保障,又怎么能开放那么大的原生软件才有的权限给网页自己的脚本文件JS呢?如果JS能修改和操作本地文件,那么只要打开一个连接,就相当于直接装上一个不认识的软件到自己的系统里!可以搜索查询到指定目录下发送你的聊天记录、帐号资料等等,这是多么危险的行为。如果一个浏览器如此不完全,谁还会用这种浏览器呢?
所以JS语言在设计之处,就没有这个功能。直到HTML5的File API,也只能实现读取(需要用户主动操作)本地文件(只读方式),在内存中操作和修改,修改完了以后只能上传或者download,对本地原有文件无法产生任何影响。
同时浏览器也给很多操作限制了权限,例如上传文件、上传图片换头像等功能,只能用户通过主动点击事件和主动选择文件来实现,JS无法自动上传。JS本身有打开新窗口的功能,但是也是需要用户主动点击或者Enter键才能触发,否则会被浏览器拦截,并显示被拦截信息。高危行为,都有限制。
当然,也不是完全没有办法,你可以通过Node.js实现,让JS像PHP一样实现后端脚本功能。前提是要自己安装配置一堆东西,你的JS就能操作本地文件了。但是用户肯定不会这么干,也不知道怎么安装,浏览器本身就有安全隔离,如果你是自己要实现JS操作本地文件可以用这个思路,如果是给别人用户非常困难。
但是,所有这些功能仅限于浏览器端,JS依赖浏览器来解释执行。浏览器作为安装到系统中的原生软件,是有权限操作本地文件的,比如浏览器自动更新、上传文件和下载文件。但是,如果把操作本地文件的权限开放给JS,就意味着,开发者只需要写一个JS,放到某个地址,用户打开这个链接,浏览器执行JS,就开始操作本地文件。于是,显而易见,只需要一个JS就可以做以下事情:自动上传用户的文件、资料,删除、修改用户的文件、软件,自动下载文件、软件甚至木马到用户本地。
计算机安全问题最大的隐患就是互联网,我们连网站的安全都无法完全保障,又怎么能开放那么大的原生软件才有的权限给网页自己的脚本文件JS呢?如果JS能修改和操作本地文件,那么只要打开一个连接,就相当于直接装上一个不认识的软件到自己的系统里!可以搜索查询到指定目录下发送你的聊天记录、帐号资料等等,这是多么危险的行为。如果一个浏览器如此不完全,谁还会用这种浏览器呢?
所以JS语言在设计之处,就没有这个功能。直到HTML5的File API,也只能实现读取(需要用户主动操作)本地文件(只读方式),在内存中操作和修改,修改完了以后只能上传或者download,对本地原有文件无法产生任何影响。
同时浏览器也给很多操作限制了权限,例如上传文件、上传图片换头像等功能,只能用户通过主动点击事件和主动选择文件来实现,JS无法自动上传。JS本身有打开新窗口的功能,但是也是需要用户主动点击或者Enter键才能触发,否则会被浏览器拦截,并显示被拦截信息。高危行为,都有限制。
当然,也不是完全没有办法,你可以通过Node.js实现,让JS像PHP一样实现后端脚本功能。前提是要自己安装配置一堆东西,你的JS就能操作本地文件了。但是用户肯定不会这么干,也不知道怎么安装,浏览器本身就有安全隔离,如果你是自己要实现JS操作本地文件可以用这个思路,如果是给别人用户非常困难。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询