如何在“ --allow-file-access-from-files”模式下使用Chrome启动HTML?


124

我在这里有同样的情况

为了解决此问题,我必须在“ --allow-file-access-from-files”模式下使用Chrome启动html文件。我多次尝试了下一步,但是没有用。

  1. 在Windows 7下启动cmd
  2. 直接转到chrome.exe文件夹
  3. 做这个 chrome --allow-file-access-from-files file:///C:/test%20-%203.html

1
您也可以使用chrome插件。我发现这是最实用的方法。这只是一个例子:chrome.google.com/webstore/detail/allow-control-allow-origi/…–
罗伯特·帕库斯

5
@RobertParcus如果您使用的file协议,该插件似乎无法正常工作。
Andrew Thaddeus Martin 2015年

Answers:


81

搜索您的Chrome可执行文件的路径,然后在您的cmd上尝试:

> "C:\PathTo\Chrome.exe" --allow-file-access-from-files

资源

编辑: 正如我在您的问题上看到的那样,请不要忘记Windows与Unix有点相似,因此,当您键入“ chrome ...”时,cmd将在PATH中搜索Chrome,但是通常Chrome文件夹是不在PATH上。另外,您不为可执行文件指定扩展名...因此,如果移至Chrome的文件夹,此命令也可能会起作用:

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

2
我重新启动计算机,然后按照您说的做,看起来还不错。谢谢。
AmyWuGo 2013年

2
根据Philippe的评论,您需要退出所有chrome进程,然后使用命令行选项重新启动。(Windows 7)
yoyo

2
如果重新启动Chrome后无法正常工作,请检查正在运行的后台进程(时钟旁边的Chrome图标)。您可能已启用“让Google Chrome在后台运行”选项。
亚历克斯·克劳斯

1
@Abdul是的,确切地说,除非您使用该标志创建快捷方式并从中启动Chrome。
Mohamed Amine 2015年

3
Windows PowerShell中的Star Chrome:Start-Process "chrome.exe" "--allow-file-access-from-files"
Peppe LG

114

那面旗帜很危险!!使文件系统保持打开状态以供访问。默认情况下,来自任何地方,本地或Web的文档都不能访问本地file:///资源。

更好的解决方案是在本地运行一些http服务器。

-对于Windows-

最简单的方法是使用节点的程序包管理器全局安装http-server:

npm install -g http-server

然后只需http-server在您的任何项目目录中运行:

例如。 d:\my_project> http-server

Starting up http-server, serving ./
Available on:
 http:169.254.116.232:8080
 http:192.168.88.1:8080
 http:192.168.0.7:8080
 http:127.0.0.1:8080
Hit CTRL-C to stop the server

或按照prusswan的建议,您也可以在Windows下安装Python,然后按照以下说明进行操作。

-对于Linux-

由于Python在大多数linux发行版中通常都可用,因此只需python -m SimpleHTTPServer在您的项目目录中运行,就可以在http://localhost:8000

在Python 3中,SimpleHTTPServer模块已合并到其中http.server,因此新命令为python3 -m http.server

简单,无安全风险,无意间使浏览器容易受到攻击。


9
这应该是公认的答案!我来这里的目的是寻找在--allow-file-access-to-filesChrome(和Opera)中使用命令行选项的正确方法。您的回答让我知道我的问题是错误的,这是重要原因。最重要的是,您已经以简洁,易于遵循的方式编写了解决方案。谢谢十亿!我也建议@orszaczky,对于与该原始问题(即另一个问题)相关的SO问题,您写的答案基本上相同。我可以写,但你值得赞扬。
安德鲁·威廉姆斯

24
这确实是一个很好的建议,但实际上并不是对这个问题的答案。问题不是“什么是访问chrome中本地文件的最佳方法”,而是“我如何使用此标志启动”。如果您意识到风险并且不打开任何未创建的内容,或者甚至不在线也可以。有一些为什么这个有用的原因。我想这就是Google使其成为选项的原因。
TinMonkey '16

2
有趣的是,您会建议人们在Windows上安装节点而不是python,仅用于托管此简单服务器。好像python选项不适用于Windows(不是)。 当您只有锤子时,一切看起来都像钉子吗?
prusswan

15
这个答案只是散布恐惧。该--allow-file-access-from-files选项仅允许file://网页访问其他file://资源。它不会使您的文件系统保持打开状态。
GetFree

3
这不是问题的答案。有些人可能真的需要这个,例如,我正在使用特殊的Webkit应用程序库Coherent UIGT。在测试时,我需要本地文件访问。顺便说一句,Firefox支持file://加载另一个本地文件。
埃里克

29

您可能要尝试使用Web Server for Chrome,它可以使用HTTP从本地文件夹提供网页。它使用简单,并且可以避免使用该标志,正如上面提到的那样,该标志可能会使您的文件系统易受攻击。

适用于Chrome的Web服务器的屏幕截图


3
辉煌。这是我一直在寻找的用户友好型解决方案,谢谢。
jay-danger

1
那很棒。正是这个问题需要什么。
A. Denis

21

在撰写本文时,在OS X中通常看起来像这样

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files

如果您像我这样的怪胎,并且将您的应用程序放入~/Applications,那么它将是

"/Users/yougohere/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files

如果这些都不起作用,请chrome://version在您的Chrome地址栏中输入内容,它会告诉您应该使用哪种“命令行”调用。只需添加--allow-file-access-from-files


“ Chrome地址栏中的chrome:// version,它会告诉您应该使用哪种“命令行”调用”这一点
JCH77,

15

不要这样! 您正在打开机器进行攻击。而是运行本地服务器。就像打开外壳/终端/命令行并键入一样简单

cd path/to/files
python -m SimpleHTTPServer

然后将浏览器指向

http://localhost:8000

如果发现它太慢,请考虑此解决方案



1
这些攻击是针对--disable-web-security,不是针对,--allow-file-access-from-files因此它们将无法正常工作-人们知道。有风险,但是没有那么大的风险。

你甚至读过这篇文章吗?至少有一种攻击是可能的--allow-file-access-from-files。当零风险方法如此简单时,为什么还要冒险?
gman

@JoeRocc,感谢您的不赞成,也感谢您帮助人们保护机器的安全。您是真正的英雄
gman

1
像其他所有变种一样,这也不是正确的答案,甚至也不是问题。您的建议实际上是错误的。使用该选项启动不会使您的计算机受到攻击。它以受控方式禁用了过于广泛的安全钳制的近视/惰性实现。本地HTML或SVG文件应该绝对有权访问file:协议内容,例如其自己的.css文件。
Minok

6

如果您使用的是Mac,则可以使用以下终端命令:

open -a Google\ Chrome --args --allow-file-access-from-files

1

退出(强制退出)所有chrome实例。否则,以下命令将不起作用。

open -a "Google Chrome" --args --allow-file-access-from-files

在终端中执行此命令将打开Chrome,无论安装在何处。


1
“退出所有实例”-根据我的经验(在Linux上),这是正确的。这显然是一个共享状态,只能在全新启动时设置。
布伦特·布拉德本

0

在Windows上:

chrome --allow-file-access-from-files file:///C:/test%20-%203.html

在Linux上:

google-chrome --allow-file-access-from-files file:///C:/test%20-%203.html

0
REM Kill all existing instance of chrome 
taskkill /F /IM chrome.exe /T
REM directory path where chrome.exe is located
set chromeLocation="C:\Program Files (x86)\Google\Chrome\Application"
cd %chromeLocation%
cd c:
start chrome.exe --allow-file-access-from-files

将以上行另存为.bat文件


taskkill / F / IM chrome.exe / T对不重新启动计算机很有用
JCH77,

0

只要该文件不是恶意软件,这取决于将放入文件系统的文件,那么这将是安全的。

但是不必担心将文件写入/读取到文件系统目录,因为您可以通过赋予适当的访问权限和安全限制来加强该目录的安全性(包括其继承性)。例如:读/写/修改。

默认情况下,文件系统,本地存储和存储目录位于“ \ Users [当前用户] \ AppData \ Local \ Google \ Chrome \ User Data \ Default”目录中。

但是,您可以使用“ --user-data-dir”标志来自定义它。

这是一个示例:

"C:\Program Files (x86)\Google\Application\chrome.exe" --user-data-dir="C:\Chrome_Data\OO7" --allow-file-access-from-files

希望这对任何人有帮助。


0

好了,可以快速运行需要许可或被CORS阻止的html只需使用VSCODE打开文件夹并安装名为“实时服务器”的扩展程序即可

然后只需单击底部的“开始直播”,就可以了。 屏幕截图

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.