【问题标题】:Google Chrome --allow-file-access-from-files disabled for Chrome Beta 8Google Chrome --allow-file-access-from-files 已禁用 Chrome Beta 8
【发布时间】:2011-05-15 08:01:43
【问题描述】:

我一直在使用 jQuery 和 Microsoft Seadragon 技术开发 AJAX 应用程序。
我需要访问 html5 画布函数 toDataURL。

对于谷歌浏览器,同源规则适用于该函数,这意味着本地运行的页面(URL 中带有file:///)无法满足同源规则并引发异常。

使用 Chrome 7,使用 --allow-file-access-from-files 选项启动应用程序,允许从本地文件调用 canvas.toDataURL()

但是,使用相同选项 (--allow-file-access-from-files) 启动 Chrome Beta 8 似乎不允许在本地文件上调用 canvas.toDataURL()

Chrome 是否放弃了 --allow-file-access-from-files 选项,或者它刚刚被禁用,因为它是 Beta 版本而不是完整版本?

谢谢!

【问题讨论】:

    标签: ajax file google-chrome local same-origin-policy


    【解决方案1】:

    Looking at the issues for this 表示整个--allow-file-access-from-files 的事情很匆忙。

    1. “Firefox 做到了..”
    2. “我们该怎么做?”
    3. 一段时间过去了
    4. “这里是补丁”
    5. “通过!在主干上想知道下一个开发版本会发生什么”
    6. “啊,它坏了”“使用命令行选项”“好的”
    7. “我们发货了!”
    8. “WTF 伙计们?你把我的东西都弄坏了!为什么不早点告诉我们?”
    9. 沉默

    解决您的问题
    确实,这似乎是测试版的特别之处,我在这里使用Chrome 8.0.552.5 dev--allow-file-access-from-files 的工作方式与预期一样,我还使用Chromium 9.0.592.0 (66889) 对其进行了测试,它是否也能按预期工作。

    我怀疑 dev 分支发生了一些变化。不幸的是,几乎不可能在 chromium 的问题跟踪器上找到一些东西。

    【讨论】:

    • 你怎么能做--allow-file-access-from-files的事情?我真的不明白它是如何工作的。
    • @Aerovistae, A. 打开 Chrome 快捷方式的属性,将其添加到目标:"...\chrome.exe --allow-file-access-from-file"(注意引号)|| B. 使用您的命令提示符,运行带有标签 ...\chrome.exe --allow-file-access-from-file 的 Chrome
    • @Aerovistae 和 esacpe "(" 和 " " 如果您使用的是 cmd,则使用 ^(^
    【解决方案2】:

    您是否在使用命令行参数打开之前关闭了所有 chrome 实例?您必须这样做才能使该参数起作用。

    【讨论】:

    • 哇,我什么都试过了,这就是为我解决问题的技巧。
    • 我不喜欢那样。你能通过强制它在新窗口中生成来解决这个问题吗?
    【解决方案3】:

    总结到目前为止的所有答案。

    在运行 chrome 之前,请确保没有运行 chrome 进程。

    Windows

    -allow-file-access-from-files
    

    (用一个破折号)

    Linux

    --allow-file-access-from-files
    

    (带有两个破折号)

    【讨论】:

    • 这个+关闭所有打开的窗口是它在窗口上工作的唯一方法。
    • 一个破折号对我有用,在 Chrome 版本 34.0.1847.116 m 上。我在运行命令之前使用了“tskill chrome”以确保所有 Chrome 窗口都已关闭。
    【解决方案4】:

    我找到了使用 JavaScript/Flash 方法解决此问题的方法。如果 flash 在 Local Only 安全沙箱中编译,则它具有对本地文件的完全访问权限。使用 ExternalInterface,JavaScript 可以请求 Flash 应用程序加载文件,而 Flash 可以将结果返回给 JavaScript。

    你可以在这里找到我的实现:https://code.google.com/p/flash-loader/

    【讨论】:

      【解决方案5】:

      让我清醒的诀窍是,您必须在 HTML 代码中提供文件的绝对路径,而不仅仅是文件名。例如 file://... 而不是直接名称,即使您正在访问同一目录中的文件。它会起作用的!

      【讨论】:

      • 不确定 chrome 的版本,但 27 会给出以下错误:“跨源请求仅支持 HTTP。”
      猜你喜欢
      • 2012-01-23
      • 2018-04-19
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 2012-03-22
      • 2012-05-26
      相关资源
      最近更新 更多