Как запустить html в Chrome в режиме «--allow-file-access-from-files»?

124

У меня такая же ситуация с ЗДЕСЬ

И чтобы решить эту проблему, мне нужно запустить html-файл в Chrome в режиме «--allow-file-access-from-files». Я пробовал следующие шаги много раз, но это не сработало.

  1. запустить cmd под Windows 7
  2. прямо в папку chrome.exe
  3. сделай это chrome --allow-file-access-from-files file:///C:/test%20-%203.html
AmyWuGo
источник
1
Вы также можете использовать для этого плагин Chrome. Я считаю это наиболее практичным способом. Это всего лишь один пример: chrome.google.com/webstore/detail/allow-control-allow-origi/…
Роберт Паркус
5
@RobertParcus Этот плагин не работает, если вы используете fileпротокол.
Эндрю Таддеус Мартин

Ответы:

81

Найдите путь к исполняемому файлу Chrome, а затем попробуйте в cmd:

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

Источник

РЕДАКТИРОВАТЬ: Как я вижу по вашему вопросу, не забывайте, что Windows немного похожа на Unix, поэтому, когда вы набираете «хром ...», cmd будет искать Chrome в PATH, но в целом папка Chrome не не на ПУТИ. Кроме того, вы не указываете расширение для своего исполняемого файла ... Поэтому, если вы перейдете в папку Chrome, эта команда, вероятно, тоже будет работать:

> .\chrome.exe --allow-file-access-from-files
Мохамед Амин
источник
2
Я перезапустил свой компьютер и сделал то же, что и вы, и вроде все нормально. Спасибо.
AmyWuGo 03
2
Согласно комментарию Филиппа, вам необходимо выйти из всех процессов Chrome и перезапустить с параметром командной строки. (Windows 7)
йойо
2
Если после перезапуска Chrome он не работает, проверьте, запущены ли фоновые процессы (значок хрома рядом с часами). У вас может быть включена опция «Разрешить Google Chrome работать в фоновом режиме».
Alex Klaus
1
@Abdul Да, конечно, если только вы не создадите ярлык с флагом и не запустите с него Chrome.
Мохамед Амин
3
Star Chrome из Windows PowerShell:Start-Process "chrome.exe" "--allow-file-access-from-files"
Пеппе LG,
115

Этот флаг опасен !! Оставляет вашу файловую систему открытой для доступа. Документы, исходящие из любого места, локального или из Интернета, по умолчанию не должны иметь доступа к локальным ресурсам file: ///.

Намного лучшее решение - запустить небольшой http-сервер локально.

--- Для Windows ---

Самый простой - установить http-сервер глобально с помощью диспетчера пакетов узла:

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, вы также можете установить Python под Windows и следовать инструкциям ниже.

--- Для Linux ---

Поскольку Python обычно доступен в большинстве дистрибутивов Linux, просто запустите его python -m SimpleHTTPServerв каталоге проекта, и вы сможете загрузить свою страницу наhttp://localhost:8000

В Python 3 SimpleHTTPServerмодуль был объединен http.server, поэтому новая команда python3 -m http.server.

Легко и без риска для безопасности, если вы случайно оставите ваш браузер открытым.

orszaczky
источник
9
ЭТО должен быть принятый ответ! Я пришел сюда в поисках правильного способа использования параметра --allow-file-access-to-filesкомандной строки в Chrome (и Opera). Ваш ответ дает мне понять, что мой вопрос неверен по важной причине. Вдобавок ко всему, вы написали свое решение кратким и понятным языком. Спасибо огромное! Я также предлагаю, @orszaczky, написать по существу тот же ответ на вопрос SO, который был связан в этом исходном вопросе, то есть в этом другом вопросе . Я мог бы написать это, но вы заслуживаете похвалы.
Эндрю Виллемс
25
Это действительно может быть отличным предложением, но на самом деле это не ответ на вопрос. Вопрос заключался не в том, «как лучше всего получить доступ к локальным файлам в Chrome», а конкретно в том, «как запустить с этим флагом». Если вы знаете о рисках и не открываете то, что не создавали, или если вы даже не в сети ... это прекрасно. Есть причины, по которым это полезно ... что, я полагаю, является причиной того, что Google сделал это опцией.
TinMonkey
2
Забавно, что вы рекомендовали бы людям установить node, а не python в Windows, только для размещения этого простого сервера. Как будто вариант python не подходит для Windows (а это не так). Когда все, что у вас есть, это молоток, все выглядит как гвоздь?
prusswan 06
17
Этот ответ просто сеет страх. --allow-file-access-from-filesОпция позволяет file://доступ веб - страницы на другие file://ресурсы, вот и все. Это не оставляет открытой файловую систему.
GetFree
3
Это не ответ на вопрос. Некоторым это действительно может понадобиться, например, я использую специальную библиотеку приложений webkit Coherent UIGT. Когда я тестирую, мне нужен доступ к локальному файлу. Кстати, Firefox поддерживает file: // загрузка другого локального файла.
Эрик
29

Вы можете попробовать веб-сервер для Chrome , который обслуживает веб-страницы из локальной папки с помощью HTTP. Он прост в использовании и позволяет избежать установки флага, который, как упоминалось выше, может сделать вашу файловую систему уязвимой.

Снимок экрана веб-сервера для Chrome

Гейл Парслоу
источник
3
Brilliant. Это удобное для пользователя решение, которое я искал, спасибо.
jay-
1
замечательно. Собственно то, что нужно для этой проблемы.
А. Денис
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: // version в адресной строке Chrome, и он сообщит вам, какой вызов" командной строки "вы должны использовать" Вот в чем суть
JCH77
15

Не делай этого! Вы открываете свою машину для атак . Вместо этого запустите локальный сервер. Это так же просто, как открыть оболочку / терминал / командную строку и ввести

cd path/to/files
python -m SimpleHTTPServer

Затем укажите в браузере

http://localhost:8000

Если вы обнаружите, что это слишком медленно, рассмотрите это решение

GMan
источник
+1 к ссылке на stackoverflow.com/questions/12905426/…
ESRogs
1
Эти атаки предназначены для --disable-web-security, а не --allow-file-access-from-files, поэтому они не будут работать - просто чтобы люди знали. Риск есть, но он далеко не такого размера.
Вы вообще читали статью? По крайней мере одна из атак возможна с помощью --allow-file-access-from-filesкакого. Зачем вообще рисковать, если путь нулевого риска настолько прост?
gman 06
@JoeRocc, спасибо за отрицательный голос и спасибо за помощь людям в снятии защиты с их машин. Ты настоящий герой
gman 06
1
Это, как и все другие варианты этого, не является правильным ответом и даже не является проблемой. То, что вы предлагаете, на самом деле неверно. Запуск с этой опцией не открывает вашу машину для атак. Это контролируемым образом «отключает близорукую / ленивую реализацию слишком широких мер безопасности. Локальный файл HTML или SVG обязательно должен иметь доступ к содержимому протокола file: например, его собственному файлу .css.
Минок
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). Очевидно, это общее состояние, которое можно установить только при новом запуске.
Brent Bradburn
0

В окнах:

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

Надеюсь, это кому-нибудь поможет.

jo0gbe4bstjb
источник
0

Ну, есть быстрый запуск html, который требует разрешения или заблокирован CORS. Просто откройте папку с помощью VSCODE и установите расширение под названием «live server».

А затем просто нажмите на нижнюю часть, которая гласит, что запускать, вот и все. Скриншот

Просенджит Пол
источник