Як запустити 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

1
Для цього також можна використовувати хромований плагін. Я вважаю це найбільш практичним способом. Це лише один приклад: chrome.google.com/webstore/detail/allow-control-allow-origi/…
Роберт Паркус

5
@RobertParcus Цей плагін, здається, не працює, якщо ви використовуєте fileпротокол.
Андрій Тадеус Мартін

Відповіді:


81

Знайдіть шлях свого виконуваного файлу Chrome, а потім спробуйте:

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

Джерело

EDIT: Як я бачу у вашому питанні, не забувайте, що Windows трохи схожий на Unix, тому коли ви введете "chrome ...", cmd шукатиме Chrome у PATH, але загалом папка Chrome isn не на ПАТ. Крім того, ви не вказуєте розширення для свого виконуваного файлу ... Тож якщо ви перейдете до папки Chrome, ця команда, ймовірно, також буде працювати:

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

2
Я перезапустив комп’ютер і роблю так само, як ви кажете, і це здається прекрасним. Дякую.
AmyWuGo

2
Відповідно до коментаря Філіппа, вам потрібно вийти з усіх хромованих процесів і перезапустити за допомогою параметра командного рядка. (Windows 7)
yoyo

2
Якщо після перезавантаження Chrome не працює, перевірте запущені фонові процеси (хромована піктограма біля годинника). Можливо, увімкнено опцію "Нехай Google Chrome працює у фоновому режимі".
Олексій Клаус

1
@Abdul Так, якщо тільки не створити ярлик із прапором і не запустити Chrome з нього.
Мохаммед Амін

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

114

Цей прапор небезпечний !! Залишає вашу файлову систему відкритою для доступу. Документи, що походять з будь-якого місця, локального чи веб-сайту, за замовчуванням не повинні мати доступу до локального файлу: /// ресурсів.

Набагато краще рішення - запустити невеликий 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 під вікном, і дотримуйтесь інструкцій нижче.

--- для Linux ---

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

У Python 3 SimpleHTTPServerмодуль був об'єднаний http.server, тому нова команда єpython3 -m http.server .

Просто та без ризику безпеки випадково залишає браузер відкритим вразливим.


9
ЦЕ повинна бути прийнятою відповіддю! Я прийшов сюди, шукаючи правильний спосіб використовувати параметр --allow-file-access-to-filesкомандного рядка з Chrome (та Opera). Ваша відповідь дозволяє мені зрозуміти, що моє запитання неправильне, з важливої ​​причини. На додаток до цього, ви написали своє рішення стисло, простий у виконанні спосіб. Дякую мільярд! Я б також запропонував, @orszaczky, ви написати по суті таку ж відповідь на питання ЗО, яке було пов'язане в цьому первісному запитанні, тобто на це інше питання . Я можу це написати, але ви заслуговуєте на кредит.
Ендрю Віллемс

24
Це дійсно може бути чудовою пропозицією, але насправді це не відповідь на питання. Питання полягало не в тому, «який найкращий спосіб отримати доступ до локальних файлів в хромі», а саме «як запустити цей прапор». Якщо ви знаєте про ризики і не відкриваєте нічого, чого не створили, або якщо ви навіть не в Інтернеті .. це абсолютно добре. Є причини, чому це корисно .. Я вважаю, що причина, через яку Google зробив це варіант.
TinMonkey

2
Смішно, що ви б рекомендували людям встановлювати вузол, а не пітон на Windows, просто для розміщення цього простого сервера. Наче параметр python був би непридатний для Windows (що це не так). Коли у вас є молоток, все виглядає як цвях?
prusswan

15
Ця відповідь просто поширює страх. --allow-file-access-from-filesОпція дозволяє file://доступ веб - сторінки на інші file://ресурси, ось і все. Він не залишає вашу файлову систему відкритою.
GetFree

3
Це не відповідь на питання. Деяким людям це може знадобитися, наприклад, я використовую спеціальну бібліотеку додатків для веб-програм Coherent UIGT. Під час тестування мені потрібен локальний доступ до файлів. BTW, Firefox підтримує файл: // завантаження іншого локального файлу.
Ерік

29

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

Знімок екрана веб-сервера для Chrome


3
Блискуча. Це зручне для мене рішення, яке я шукав, дякую.
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: // версія у своєму адресному рядку Chrome, і він підкаже, яке виклик" командного рядка "ви повинні використовувати" That the point
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 повинен мати абсолютно доступ до файлу: вміст протоколу, наприклад, власний .css-файл.
Мінок

6

Якщо ви використовуєте mac, ви можете використовувати таку команду терміналу:

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

1

Закрити (примусово вийти) з усіх примірників хрому. Інакше команда нижче не працюватиме.

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

Виконання цієї команди в терміналі відкриє Chrome незалежно від того, де вона встановлена.


1
"Закрити всі екземпляри" - Це вірно з мого досвіду (в Linux). Це, мабуть, загальний стан, який можна встановити лише під час нового запуску.
Брент Бредберн

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

Залежно від файлу, який буде розміщений у файловій системі, якщо цей файл не є шкідливим програмним забезпеченням, це було б безпечно.

Але не хвилюйтеся писати / читати файли (файли) у каталог файлової системи, оскільки ви можете посилити безпеку цього каталогу (включити його у спадщину), надавши належне право доступу та обмеження безпеки. наприклад: читати / писати / змінювати.

За замовчуванням каталог файлів, локальне зберігання та зберігання розміщені у каталозі "\ Користувачі [Поточний користувач] \ AppData \ Місцевий \ Google \ Chrome \ Користувацькі дані \ За замовчуванням".

Однак ви можете налаштувати його, використовуючи прапор "--user-data-dir".

І це зразок:

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

Сподіваюсь, це допомагає комусь.


0

Ну, є швидкий запуск html, який потребує дозволу або заблокований CORS. Просто просто відкрийте папку за допомогою VSCODE та встановіть розширення під назвою "live server"

А потім просто натисніть на нижню частину, яка говорить: "Ідіть в прямому ефірі". Знімок екрана

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.