允许Google Chrome浏览器使用XMLHttpRequest从本地文件加载URL


125

当尝试使用XMLHttpRequest从本地文件执行HTTP请求时,由于Access-Control-Allow-Origin违反,它基本上会失败。

但是,我本人正在使用本地网页,因此我想知道是否有任何方法可以使Google Chrome允许这些请求,这些请求是从本地文件到Internet上的URL。

例如,$.get('http://www.google.com/')在本地文件中执行时失败,但是我自己编写了脚本页面,并且自己在使用它,因此,如果我可以禁止显示该页面并加载URL,它将非常有用。

因此,如何允许Google Chrome浏览器使用XMLHttpRequest从本地文件加载URL?


1
Access-Control-Allow-Origin: null通过该网站的作品。(
ofc。not

3
@JessamynSmith:答案的顺序会改变,接受的答案也可能会改变,因此,链接到答案要比说“接受的答案下方的答案”之类的词更好。使用答案的“共享”链接指向的URL。
Michael Scheper'5

2
@MichaelScheper鉴于我粘贴了有效的实际命令,因此您的评论有些无关紧要。但是,如果包含链接有价值,我将其删除并重新发布。在现代的Chrome中,错误如下所示:XMLHttpRequest无法加载file:///path/to/file/css/base.css。跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https,chrome-extension-resource。这个答案stackoverflow.com/a/4819114/1649165对我
有用

@JessamynSmith:对不起,您认为我的建议无关紧要。由于您认为特定的答案很重要,因此,我认为您可能希望将来对您的评论进行验证。我的错。
Michael Scheper

Answers:


49

与启动铬 --disable-web-security

在Windows上:

chrome.exe --disable-web-security

在Mac上:

open /Applications/Google\ Chrome.app/ --args --disable-web-security

这将允许跨域请求。
我不知道这是否也适用于本地文件,但请告诉我们!

值得一提的是,这确实符合您的期望,它会禁用网络安全性,因此请谨慎使用。


您也可以在Mac上使用Safari。当从本地文件发出请求时,默认情况下,它允许AJAX到本地文件。另外,关于“ .exe”,关于Windows的问题中没有提及。Pim是Windows开发人员,但是关于Windows却一言不发。

1
是的,我在Windows上,对此感到抱歉。现在将尝试一下,谢谢。顺便说一句,我始终在打开计算机电源的情况下始终运行Chrome,是否有一种方法仅允许使用本地文件或仅在特定选项卡中进行跨域请求?因为这样,我实际上不能同时安全地浏览Internet ...
pimvdb

1
我刚刚下载了最新的Chromium版本,以便运行一个独立的不安全版本进行测试,并安装了“真实的” Chrome以进行安全的Internet浏览。它确实有效,谢谢!
pimvdb 2011年

@Tom-只要使用“ file:///”协议而不是“ localhost ” ,您就可以在带有Safari的Mac上执行此操作,而无需进行任何设置更改
在12年

2
我在Safari 10.1上尝试过,它给了我:XMLHttpRequest cannot load file:///<my_local_file>. Cross origin requests are only supported for HTTP.因此从该线程发出的有关Safari浏览器的声明不再有效。
Michal Cichon

233

使用--disable-web-security开关非常危险!为什么在只允许XMLHttpRequest使用--allow-file-access-from-filesswitch 访问其他文件中的文件时完全禁用安全性?

使用这些命令之前,请确保结束所有正在运行的Chrome实例。

在Windows上:

chrome.exe --allow-file-access-from-files

在Mac上:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

对Chrome的“功能”的讨论:


5
是否可以将其设置为默认行为,而不必每次都打开终端/命令行或自定义快捷方式?
Kokodoko

1
@Kokodoko我想不。
Konstantin Smolyanin 2014年

2
@JoshH我完全同意,使用本地Web服务器进行网站开发要比通过浏览器直接访问本地文件更好。但是,有人问了确切的问题,我已经回答了。
Konstantin Smolyanin 2014年

13
如果有人要尝试此标志:此标志在chrome://flags
Blaise

5
@pimvdb我想您应该将此标记为已接受的答案。
克里斯l

21

Mac版本。从终端运行:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

我在这里看到几张反对票。您能详细说明我的答案有什么问题吗?
2013年

正如其他答案所解释的那样,建议在有一个特定的开关更改这一项时,建议禁用所有Web安全性是不明智的。
curiousdannii

有一个更永久的解决方案将是很好的。这是假设用户事先知道的,并且还需要重新启动铬。
Michael Dunn

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.