Html 为什么文件路径总是被视为跨域?

Html 为什么文件路径总是被视为跨域?,html,cross-domain,Html,Cross Domain,为什么本地页面不能像 file:///C:/index.html 发送对资源的请求 file:///C:/data.json 这是被阻止的,因为这是一个跨源请求,但是跨源请求是以什么方式进行的呢?我不明白为什么这是一个漏洞/预防。当我想为JavaScript/HTML中的某些内容快速开发一个实用程序时,这似乎是一个巨大的痛苦,因为这个看似任意的限制,我无法在不上传到某个服务器的情况下运行它。它保护您免受从硬盘读取恶意HTML文件的伤害 在真正的服务器上,希望您不会提供任意文件,但在您的本地计

为什么本地页面不能像

file:///C:/index.html
发送对资源的请求

file:///C:/data.json

这是被阻止的,因为这是一个跨源请求,但是跨源请求是以什么方式进行的呢?我不明白为什么这是一个漏洞/预防。当我想为JavaScript/HTML中的某些内容快速开发一个实用程序时,这似乎是一个巨大的痛苦,因为这个看似任意的限制,我无法在不上传到某个服务器的情况下运行它。

它保护您免受从硬盘读取恶意HTML文件的伤害


在真正的服务器上,希望您不会提供任意文件,但在您的本地计算机上,您可以很容易地诱骗用户加载您想要的任何文件。

它可以防止您从硬盘读取恶意HTML文件


在真正的服务器上,您希望不提供任意文件,但在本地计算机上,您可以很容易地诱骗用户加载您想要的任何文件。

HTML文件应该是安全的。诱使人们将HTML文档保存到硬盘,然后打开它并不困难,只要打开此电子邮件附带的HTML文件,许多电子邮件客户端就会自动将其安全保存到tmp目录,并在默认应用程序中打开它

如果该文件中的JavaScript具有读取磁盘上任何文件的权限,那么用户将极易受到攻击


这与Microsoft Word之类的软件在允许宏运行之前进行提示的原因相同。

HTML文件应该是安全的。诱使人们将HTML文档保存到硬盘,然后打开它并不困难,只要打开此电子邮件附带的HTML文件,许多电子邮件客户端就会自动将其安全保存到tmp目录,并在默认应用程序中打开它

如果该文件中的JavaScript具有读取磁盘上任何文件的权限,那么用户将极易受到攻击


这与Microsoft Word等软件在允许宏运行之前提示的原因相同。

浏览器设置了安全措施,以确保普通用户不会面临更大的风险。假设我是一个恶意网站,我让你下载一些东西到你的文件系统,在你看来,就像一个普通的网站。想象一下,下载的HTML可以访问文件系统的其他部分,然后通过AJAX或此软件包附带的文件系统上的另一段可执行代码将数据发送给我。对于一个普通用户来说,这可能看起来像一个普通的网站,只是打开了一个有点奇怪,但我仍然让它工作。如果浏览器阻止了这一点,他们会更安全

可以像这里那样关闭这些标志,但这更适合于知识渊博的用户和超级用户,并且可能会附带一些关于您的浏览会话如何不安全的警告


对于您正在讨论的那种场景,您应该能够启动某种本地HTTP服务器—可能使用Python、Ruby或node.js—我认为node.js将是测试javascript基础应用程序的一个有吸引力的选项。

浏览器设置了安全措施,以确保普通用户不会面临更大的风险。假设我是一个恶意网站,我让你下载一些东西到你的文件系统,在你看来,就像一个普通的网站。想象一下,下载的HTML可以访问文件系统的其他部分,然后通过AJAX或此软件包附带的文件系统上的另一段可执行代码将数据发送给我。对于一个普通用户来说,这可能看起来像一个普通的网站,只是打开了一个有点奇怪,但我仍然让它工作。如果浏览器阻止了这一点,他们会更安全

可以像这里那样关闭这些标志,但这更适合于知识渊博的用户和超级用户,并且可能会附带一些关于您的浏览会话如何不安全的警告


对于您正在讨论的那种场景,您应该能够启动某种本地HTTP服务器—可能使用Python、Ruby或node.js—我认为node.js是测试javascript基础应用程序的一个有吸引力的选项。

Hm,那是什么浏览器?我敢说这是一件非常奇特的事情,一个很少有人偶然发现的问题。原因很简单,就是很少有人在web开发中使用文件方案……这并不是一个真正的答案,但这可能会有所帮助:如果您正在使用Chrome@arkascha好吧,我多次遇到它的地方是“CanvasRenderingContext2D”:画布已经被跨源数据污染了。,当试图做一些快速的一次性图像处理工具。我当然希望答案不仅仅是它不应该是那样,而是它现在已经坏了,因为没有人关心它。@DanField我知道我可以做到这一点。。。这就是我为解决这个问题所做的。但我想知道我为什么要这么做。当我想把我用这种方式制作的实用程序交给其他人使用时,这样做并不是一个好的选择
It’告诉非技术用户进入并用额外的标志编辑他们的快捷方式是很尴尬的。@arkascha-每个浏览器,那是什么浏览器?我敢说这是一件非常奇特的事情,一个很少有人偶然发现的问题。原因很简单,就是很少有人在web开发中使用文件方案……这并不是一个真正的答案,但这可能会有所帮助:如果您正在使用Chrome@arkascha好吧,我多次遇到它的地方是“CanvasRenderingContext2D”:画布已经被跨源数据污染了。,当试图做一些快速的一次性图像处理工具。我当然希望答案不仅仅是它不应该是那样,而是它现在已经坏了,因为没有人关心它。@DanField我知道我可以做到这一点。。。这就是我为解决这个问题所做的。但我想知道我为什么要这么做。当我想把我用这种方式制作的实用程序交给其他人使用时,这样做并不是一个好的选择,因为告诉非技术用户进入并用额外的标志编辑他们的快捷方式是很尴尬的。@arkascha-每个浏览器都有漏洞,但它怎么会比你机器上做同样事情的恶意可执行文件更具漏洞呢?如果恶意文件在您的本地文件系统上,那么您已经成功地受到了攻击,不是吗?它并不比可执行文件更危险,但更容易诱使人们下载一个,而且你的反病毒软件更难检测到。但是它怎么会比你机器上的恶意可执行文件更容易被发现呢?如果恶意文件在您的本地文件系统上,您当时已经成功地受到了攻击,不是吗?它并不比可执行文件更危险,但更容易诱使人们下载一个,而且您的反病毒检测也更难。