Jak uruchomić html w przeglądarce Chrome w trybie „--allow-file-access-from-files”?


124

Mam taką samą sytuację z TUTAJ

Aby rozwiązać ten problem, muszę uruchomić plik html w przeglądarce Chrome w trybie „--allow-file-access-from-files”. Wiele razy próbowałem wykonać kolejne kroki, ale to nie działa.

  1. uruchom cmd pod Windows 7
  2. bezpośrednio do folderu chrome.exe
  3. Zrób to chrome --allow-file-access-from-files file:///C:/test%20-%203.html

1
Możesz również użyć do tego wtyczki Chrome. Uważam to za najbardziej praktyczny sposób. To tylko jeden przykład: chrome.google.com/webstore/detail/allow-control-allow-origi/…
Robert Parcus

5
@RobertParcus Ta wtyczka nie działa, jeśli używasz fileprotokołu.
Andrew Thaddeus Martin

Odpowiedzi:


81

Wyszukaj ścieżkę do pliku wykonywalnego Chrome, a następnie w cmd spróbuj:

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

Źródło

EDYCJA: Jak widzę w twoim pytaniu, nie zapominaj, że Windows jest trochę podobny do Uniksa, więc kiedy wpiszesz "chrome ...", cmd wyszuka Chrome w PATH, ale ogólnie folder Chrome nie jest na PATH. Ponadto nie określasz rozszerzenia dla swojego pliku wykonywalnego ... Więc jeśli przejdziesz do folderu Chrome, to polecenie prawdopodobnie też zadziała:

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

2
Zrestartowałem komputer i robię to samo, co mówisz, i wydaje się w porządku. Dziękuję Ci.
AmyWuGo,

2
Zgodnie z komentarzem Philippe'a, musisz zamknąć wszystkie procesy chrome i ponownie uruchomić z opcją wiersza poleceń. (Windows 7)
yoyo

2
Jeśli nie działa po ponownym uruchomieniu Chrome, sprawdź uruchomione procesy w tle (ikona chrome obok zegarów). Być może opcja „Pozwól Google Chrome działać w tle” jest WŁĄCZONA.
Alex Klaus

1
@Abdul Tak, dokładnie, chyba że utworzysz skrót z flagą i uruchomisz z niego Chrome.
Mohamed Amine

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

114

Ta flaga jest niebezpieczna !! Pozostawia otwarty system plików w celu uzyskania dostępu. Dokumenty pochodzące z dowolnego miejsca, lokalnego lub internetowego, domyślnie nie powinny mieć dostępu do lokalnych zasobów file: ///.

Dużo lepszym rozwiązaniem jest lokalne uruchomienie małego serwera http.

--- Dla Windowsa ---

Najłatwiej jest zainstalować serwer http globalnie za pomocą menedżera pakietów node:

npm install -g http-server

Następnie po prostu uruchom http-serverw dowolnym katalogu projektu:

Na przykład. 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

Lub, jak sugerował prusswan, możesz również zainstalować Pythona pod oknami i postępować zgodnie z poniższymi instrukcjami.

--- W systemie Linux ---

Ponieważ Python jest zwykle dostępny w większości dystrybucji Linuksa, po prostu uruchom go python -m SimpleHTTPServerw katalogu projektu i możesz załadować swoją stronę nahttp://localhost:8000

W Pythonie 3 SimpleHTTPServermoduł został scalony z http.server, więc nowe polecenie to python3 -m http.server.

Łatwe i bez ryzyka przypadkowego pozostawienia otwartej przeglądarki podatnej na zagrożenia.


9
TO powinna być zaakceptowana odpowiedź! Przyszedłem tutaj, szukając właściwego sposobu korzystania z --allow-file-access-to-filesopcji wiersza poleceń w przeglądarce Chrome (i Opera). Twoja odpowiedź pozwala mi wiedzieć, że moje pytanie jest błędne z ważnego powodu. Co więcej, napisałeś swoje rozwiązanie w zwięzły i łatwy do zrozumienia sposób. Dzięki miliardowi! Sugerowałbym również, @orszaczky, abyś napisał w zasadzie tę samą odpowiedź na pytanie SO, które było połączone w tym pierwotnym pytaniu, czyli to drugie pytanie . Mógłbym to napisać, ale zasługujesz na uznanie.
Andrew Willems

24
To rzeczywiście może być świetna sugestia, ale w rzeczywistości nie jest to odpowiedź na pytanie. Pytanie nie brzmiało „jaki jest najlepszy sposób uzyskiwania dostępu do lokalnych plików w chrome”, a konkretnie „jak uruchomić z tą flagą”. Jeśli zdajesz sobie sprawę z zagrożeń i nie otwierasz niczego, czego nie stworzyłeś, lub jeśli nie jesteś nawet w trybie online ... to jest w porządku. Są powody, dla których jest to przydatne… które, jak przypuszczam, są powodem, dla którego Google wybrało tę opcję.
TinMonkey

2
Zabawne jest to, że zalecałbyś ludziom instalowanie węzła zamiast Pythona w systemie Windows, tylko do hostowania tego prostego serwera. Jakby opcja pythona byłaby nieodpowiednia dla systemu Windows (a tak nie jest). Kiedy wszystko co masz to młotek, wszystko wygląda jak gwóźdź?
prusswan

16
Ta odpowiedź po prostu szerzy strach. Ta --allow-file-access-from-filesopcja umożliwia file://stronie internetowej dostęp do innych file://zasobów, to wszystko. Nie pozostawia otwartego systemu plików.
GetFree

3
To nie jest odpowiedź na pytanie. Niektórzy ludzie mogą tego naprawdę potrzebować, np. Używam specjalnej biblioteki aplikacji Webkit Coherent UIGT. Kiedy testuję, potrzebuję dostępu do plików lokalnych. BTW, Firefox obsługuje file: // ładowanie innego lokalnego pliku.
Eric

29

Możesz spróbować Web Server for Chrome , który obsługuje strony internetowe z folderu lokalnego przy użyciu protokołu HTTP. Jest prosty w użyciu i pozwala uniknąć flagi, która, jak ktoś wspomniany powyżej, może narazić system plików na podatność.

Zrzut ekranu serwera internetowego dla przeglądarki Chrome


3
Znakomity. To jest rozwiązanie przyjazne dla użytkownika, którego szukałem, dzięki.
Jay-

1
to wspaniale. Dokładnie po co ten problem.
A. Denis

21

W chwili pisania tego tekstu w systemie OS X zwykle będzie to wyglądać tak

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

Jeśli jesteś dziwakiem jak ja i umieścisz swoje aplikacje ~/Applications, to będzie

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

Jeśli żadne z nich nie działa, wpisz chrome://versionw pasku adresu Chrome, a powie Ci, jakiego wywołania z wiersza poleceń powinieneś użyć. Po prostu dodaj --allow-file-access-from-filesdo tego.


„chrome: // version” na pasku adresu Chrome i powie Ci, jakiego wywołania „wiersza poleceń” należy użyć. „I o to chodzi
JCH77

15

Nie rób tego! Otwierasz swoją maszynę na ataki . Zamiast tego uruchom serwer lokalny. To tak proste, jak otwarcie powłoki / terminala / wiersza poleceń i wpisanie

cd path/to/files
python -m SimpleHTTPServer

Następnie skieruj przeglądarkę na

http://localhost:8000

Jeśli uznasz, że jest za wolny, rozważ to rozwiązanie



1
Te ataki są dla --disable-web-security, nie --allow-file-access-from-files, więc nie zadziałają - tylko po to, żeby ludzie wiedzieli. Istnieje ryzyko, ale nie jest blisko tej wielkości.

Czy Ty w ogóle przeczytałeś ten artykuł? Przynajmniej jeden z ataków jest możliwy tylko za pomocą --allow-file-access-from-filesktórego. Po co w ogóle ryzykować, skoro metoda zerowego ryzyka jest tak prosta?
gman

@JoeRocc, dziękuję za głos przeciw i dziękuję za pomoc ludziom w zabezpieczaniu ich maszyn. Jesteś prawdziwym bohaterem
gman

1
To, podobnie jak wszystkie inne odmiany tego, nie jest poprawną odpowiedzią, ani nawet problemem. To, co sugerujesz, jest błędne. Uruchomienie z tą opcją nie otwiera twojego komputera na ataki. W kontrolowany sposób „wyłącza krótkowzroczną / leniwą implementację zbyt szerokiego ograniczenia bezpieczeństwa. Lokalny plik HTML lub SVG powinien bezwzględnie mieć dostęp do zawartości pliku: protokołu, na przykład własnego pliku .css.
Minok

6

Jeśli używasz komputera Mac, możesz użyć następującego polecenia terminala:

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

1

Zamknij (wymuś zamknięcie) wszystkie wystąpienia przeglądarki Chrome. W przeciwnym razie poniższe polecenie nie będzie działać.

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

Wykonanie tego polecenia w terminalu otworzy Chrome niezależnie od tego, gdzie jest zainstalowany.


1
„Zamknij wszystkie instancje” - z mojego doświadczenia wynika, że ​​(w systemie Linux). Jest to najwyraźniej wspólny stan, który można ustawić tylko przy nowym uruchomieniu.
Brent Bradburn,

0

W systemie Windows:

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

W systemie 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

zapisz powyższe wiersze jako plik .bat


taskkill / F / IM chrome.exe / T Przydatne, aby nie uruchamiać ponownie komputera
JCH77

0

W zależności od pliku, który zostanie umieszczony w systemie plików, o ile plik ten nie jest złośliwym oprogramowaniem, będzie to bezpieczne.

Ale nie przejmuj się zapisywaniem / odczytywaniem plików w katalogu systemu plików, ponieważ możesz zwiększyć bezpieczeństwo tego katalogu (uwzględnić jego dziedziczenie), nadając odpowiednie prawo dostępu i ograniczenie bezpieczeństwa. np: czytaj / zapisuj / modyfikuj.

Domyślnie system plików, pamięć lokalna i katalog przechowywania znajdują się w katalogu „\ Users [Current User] \ AppData \ Local \ Google \ Chrome \ User Data \ Default”.

Możesz go jednak dostosować, używając flagi "--user-data-dir".

A to jest próbka:

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

Mam nadzieję, że to pomoże każdemu.


0

Cóż, można szybko uruchomić kod HTML, który wymaga pozwolenia lub jest blokowany przez CORS Po prostu otwórz folder za pomocą VSCODE i zainstaluj rozszerzenie o nazwie „serwer na żywo”

A potem po prostu kliknij na dole, który mówi o transmisji na żywo, to wszystko. Zrzut ekranu

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.