【问题标题】:How to launch html using Chrome at "--allow-file-access-from-files" mode?如何在“--allow-file-access-from-files”模式下使用 Chrome 启动 html?
【发布时间】:2013-09-06 08:55:05
【问题描述】:

我和HERE有同样的情况

为了解决这个问题,我必须在“--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

【问题讨论】:

标签: javascript html google-chrome


【解决方案1】:

该标志很危险! 让您的文件系统保持打开状态以供访问。默认情况下,来自任何地方(本地或网络)的文档不应具有对本地 file:/// 资源的任何访问权限。

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

--- 适用于 Windows ---

最简单的方法是使用 node 的包管理器全局安装 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

很简单,而且没有意外打开浏览器易受攻击的安全风险。

【讨论】:

  • 这应该是公认的答案!我来这里是为了寻找在 Chrome(和 Opera)中使用 --allow-file-access-to-files 命令行选项的正确方法。出于一个重要原因,您的回答让我知道我的问题是错误的。最重要的是,您已经以简洁、易于理解的方式编写了解决方案。谢谢十亿!我还建议@orszaczky,您为这个原始问题中链接的 SO 问题编写基本相同的答案,即this other question。我可以写,但你值得称赞。
  • 这可能确实是一个很好的建议,但实际上并不是问题的答案。问题不是“在 chrome 中访问本地文件的最佳方式是什么”,而是“我如何使用这个标志启动”。如果您意识到风险并且不打开您没有创建的任何内容,或者您​​甚至不在线.. 这很好。这很有用是有原因的。我认为这是谷歌选择它的原因。
  • 有趣的是,您会建议人们在 Windows 上安装 node 而不是 python,只是为了托管这个简单的服务器。好像 python 选项不适合 Windows(它不是​​)。 当你只有一把锤子时,一切看起来都像钉子?
  • 这个答案只是在散播恐惧。 --allow-file-access-from-files 选项允许file:// 网页访问其他file:// 资源,仅此而已。它不会让您的文件系统保持打开状态。
  • 这不是问题的答案。有些人可能真的需要这个,例如我正在使用一个特殊的 webkit 应用程序库 Coherent UIGT。当我测试时,我需要本地文件访问。顺便说一句,Firefox 支持 file:// 加载另一个本地文件。
【解决方案2】:

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

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

Source

编辑: 正如我在你的问题上看到的,不要忘记 Windows 有点类似于 Unix,所以当你输入“chrome ...”时,cmd 会在 PATH 中搜索 Chrome,但一般来说 Chrome 文件夹不是在 PATH 上。另外,你没有为你的可执行文件指定扩展名......所以如果你移动到 Chrome 的文件夹,这个命令可能也可以工作:

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

【讨论】:

  • 我重新启动了我的电脑,按照你说的做了,看起来还不错。谢谢。
  • 根据 Philippe 的评论,您需要退出所有 chrome 进程并使用命令行选项重新启动。 (Windows 7)
  • 如果重启 Chrome 后仍无法正常工作,请检查正在运行的后台进程(时钟附近的 Chrome 图标)。您可能已打开“让 Google Chrome 在后台运行”选项。
  • @Abdul 是的,完全正确,除非您使用该标志创建一个快捷方式并从中启动 Chrome。
  • 来自 Windows PowerShell 的 Star Chrome:Start-Process "chrome.exe" "--allow-file-access-from-files"
【解决方案3】:

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

【讨论】:

  • 太棒了。这是我一直在寻找的用户友好型解决方案,谢谢。
  • 太好了。正是这个问题需要什么。
【解决方案4】:

在撰写本文时,在 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 地址栏中输入 chrome://version,它会告诉您应该使用什么“命令行”调用。只需添加 --allow-file-access-from-files 即可。

【讨论】:

  • "chrome://version 在你的 Chrome 地址栏中,它会告诉你应该使用什么"命令行"调用"这点
【解决方案5】:

不要这样做! You're opening your machine to attacks。而是运行本地服务器。就像打开 shell/终端/命令行并输入一样简单

cd path/to/files
python -m SimpleHTTPServer

然后将浏览器指向

http://localhost:8000

如果你觉得太慢了consider this solution

【讨论】:

  • 这些攻击是针对--disable-web-security,而不是--allow-file-access-from-files,所以它们不会起作用——人们都知道。有风险,但远不及那个规模。
  • 你读过这篇文章吗?只需--allow-file-access-from-files 就可以进行至少一种攻击。当零风险方式如此简单时,为什么还要冒险?
  • @JoeRocc,感谢您的反对,感谢您帮助人们解除他们机器的安全。你是真正的英雄
  • 这个,就像这个的所有其他变体一样,不是正确的答案,甚至也不是问题。你的建议实际上是错误的。使用该选项启动不会使您的机器受到攻击。它以一种受控的方式'禁用过于广泛的安全钳制的短视/懒惰实施。本地 HTML 或 SVG 文件绝对应该可以访问 file: 协议内容,例如它自己的 .css 文件。
【解决方案6】:

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

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

【讨论】:

    【解决方案7】:

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

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

    无论安装在哪里,在终端中执行此命令都会打开 Chrome。

    【讨论】:

    • “退出所有实例”——这在我的经验中是正确的(在 Linux 上)。这显然是一个共享状态,只能在新启动时设置。
    【解决方案8】:
    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 对不重启我的电脑很有用
    【解决方案9】:

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

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

    默认情况下,文件系统、本地存储和存储目录位于“\Users[Current User]\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
    

    希望这对任何人都有帮助。

    【讨论】:

      【解决方案10】:

      好吧,可以快速运行需要许可或被 CORS 阻止的 html 只需使用 VSCODE 打开文件夹并安装一个名为“live server”的扩展程序

      然后只需单击底部的“上线”,就是这样。 Screenshot

      【讨论】:

        【解决方案11】:

        在窗户上:

        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
        

        【讨论】:

          猜你喜欢
          • 2012-01-23
          • 2018-04-19
          • 1970-01-01
          • 2011-05-15
          • 1970-01-01
          • 2014-05-13
          • 1970-01-01
          • 1970-01-01
          • 2017-06-23
          相关资源
          最近更新 更多