¿Cómo iniciar html usando Chrome en modo "--allow-file-access-from-files"?

124

Tengo la misma situación con AQUÍ

Y para resolver este problema, tengo que iniciar el archivo html usando Chrome en modo "--allow-file-access-from-files". Intenté los siguientes pasos muchas veces, pero no funciona.

  1. iniciar cmd debajo de windows 7
  2. directo a la carpeta chrome.exe
  3. hacer esto chrome --allow-file-access-from-files file:///C:/test%20-%203.html
AmyWuGo
fuente
1
También puede usar un complemento de Chrome para eso. Me parece la forma más práctica. Este es solo un ejemplo: chrome.google.com/webstore/detail/allow-control-allow-origi/…
Robert Parcus
55
@RobertParcus Ese complemento no parece funcionar si está utilizando el fileprotocolo.
Andrew Thaddeus Martin

Respuestas:

81

Busque la ruta de su ejecutable de Chrome y luego, en su cmd, intente:

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

Fuente

EDITAR: como veo en su pregunta, no olvide que Windows es un poco similar a Unix, por lo que cuando escribe "chrome ...", cmd buscará Chrome en la RUTA, pero en general la carpeta Chrome no es en el camino. Además, no especificas una extensión para tu ejecutable ... Entonces, si te mueves a la carpeta de Chrome, este comando probablemente también funcione:

> .\chrome.exe --allow-file-access-from-files
Mohamed Amine
fuente
2
Reinicié mi computadora y hago lo mismo que usted dice, y parece estar bien. Gracias.
AmyWuGo
2
Según el comentario de Philippe, debe salir de todos los procesos de Chrome y reiniciar con la opción de línea de comando. (Windows 7)
yoyo
2
Si no funciona después de reiniciar Chrome, verifique los procesos en segundo plano en ejecución (icono de Chrome cerca de los relojes). Es posible que tenga activada la opción "Permitir que Google Chrome se ejecute en segundo plano".
Alex Klaus
1
@Abdul Sí, exactamente, a menos que cree un acceso directo con la bandera e inicie Chrome desde allí.
Mohamed Amine
3
Star Chrome de Windows PowerShell:Start-Process "chrome.exe" "--allow-file-access-from-files"
Peppe LG
114

¡Esa bandera es peligrosa! Deja su sistema de archivos abierto para el acceso. Los documentos que se originan en cualquier lugar, local o web, no deben, de manera predeterminada, tener acceso al archivo local: /// resources.

Una solución mucho mejor es ejecutar un pequeño servidor http localmente.

--- Para ventanas ---

Lo más fácil es instalar el servidor http globalmente usando el administrador de paquetes del nodo:

npm install -g http-server

Luego, simplemente ejecute http-serveren cualquiera de los directorios de su proyecto:

P.ej. 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

O como sugirió Prusswan, también puede instalar Python en Windows y seguir las instrucciones a continuación.

--- Para Linux ---

Dado que Python generalmente está disponible en la mayoría de las distribuciones de Linux, simplemente ejecute python -m SimpleHTTPServeren el directorio de su proyecto, y puede cargar su página enhttp://localhost:8000

En Python 3, el SimpleHTTPServermódulo se ha fusionado http.server, por lo que el nuevo comando es python3 -m http.server.

Fácil y sin riesgo de seguridad de dejar accidentalmente abierto su navegador vulnerable.

orszaczky
fuente
9
¡ESTA debería ser la respuesta aceptada! Vine aquí buscando la forma correcta de usar la --allow-file-access-to-filesopción de línea de comando con Chrome (y Opera). Su respuesta me permite saber que mi pregunta es incorrecta, por una razón importante. Además de todo eso, ha escrito su solución de manera concisa y fácil de seguir. Gracias mil millones! También sugeriría, @orszaczky, que escriba esencialmente la misma respuesta para la pregunta SO que estaba vinculada en esta pregunta original, es decir, esta otra pregunta . Podría escribirlo, pero te mereces el crédito.
Andrew Willems
24
De hecho, esta puede ser una gran sugerencia, pero de hecho no es una respuesta a la pregunta. La pregunta no era "cuál es la mejor manera de acceder a los archivos locales en Chrome", sino específicamente "cómo puedo iniciar con esta bandera". Si conoce los riesgos y no abre nada que no haya creado, o si ni siquiera está en línea ... está perfectamente bien. Hay razones por las que esto es útil ... que supongo es la razón por la que Google lo convirtió en una opción.
TinMonkey
2
Es curioso que recomiende a las personas que instalen el nodo en lugar de Python en Windows, solo por alojar este servidor simple. Como si la opción de Python no fuera adecuada para Windows (que no lo es). Cuando todo lo que tienes es un martillo, ¿todo parece un clavo?
Prusswan
15
Esta respuesta solo está esparciendo miedo. La --allow-file-access-from-filesopción permite el file://acceso a una página web a otros file://recursos, eso es todo. No deja abierto su sistema de archivos.
GetFree
3
No es la respuesta a la pregunta. Algunas personas realmente pueden necesitar esto, por ejemplo, estoy usando una biblioteca de aplicaciones webkit especial Coherent UIGT. Cuando estoy probando, necesito acceso a archivos locales. Por cierto, Firefox admite el archivo: // cargar otro archivo local.
Eric el
29

Es posible que desee probar Web Server para Chrome , que sirve páginas web desde una carpeta local utilizando HTTP. Es fácil de usar y evitaría la bandera, que, como alguien mencionó anteriormente, podría hacer que su sistema de archivos sea vulnerable.

Captura de pantalla del servidor web para Chrome

Gail Parsloe
fuente
3
Brillante. Esta es la solución fácil de usar que estaba buscando, gracias.
jay-danger
1
eso es genial. Exactamente lo que necesita para este problema.
A. Denis
21

Al momento de escribir esto, en OS X, generalmente se verá así

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

Si eres un bicho raro como yo y pones tus aplicaciones ~/Applications, entonces será

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

Si ninguno de los dos funciona, escriba chrome://versionla barra de direcciones de Chrome y le indicará qué invocación de "línea de comando" debe utilizar. Solo agrega --allow-file-access-from-filesa eso.

Puentes de arcilla
fuente
"chrome: // versión en su barra de direcciones de Chrome, y le dirá qué invocación de" línea de comando "debe usar" Ese es el punto
JCH77
15

¡No hagas esto! Estás abriendo tu máquina a los ataques . En su lugar, ejecute un servidor local. Es tan fácil como abrir un shell / terminal / línea de comando y escribir

cd path/to/files
python -m SimpleHTTPServer

Luego apunte su navegador a

http://localhost:8000

Si encuentra que es demasiado lento, considere esta solución

gman
fuente
1
Esos ataques son para --disable-web-security, no --allow-file-access-from-files, por lo que no funcionarán, solo para que la gente lo sepa. Existe un riesgo, pero no está cerca de ese tamaño.
¿Has siquiera leído el artículo? Al menos uno de los ataques es posible con --allow-file-access-from-filescuál. ¿Por qué correr el riesgo cuando la forma de riesgo cero es tan simple?
gman
@JoeRocc, gracias por el voto negativo y gracias por ayudar a las personas a desproteger sus máquinas. Eres un verdadero héroe
gman el
1
Esto, como todas las otras variaciones de esto, no es la respuesta correcta, ni siquiera el problema. Es realmente incorrecto lo que estás sugiriendo. Lanzar con esa opción no abre su máquina a los ataques. Esto, de forma controlada, deshabilita la implementación miope / perezosa de una represión de seguridad demasiado amplia. Un archivo local HTML o SVG debería tener absolutamente acceso al archivo: contenido del protocolo, como su propio archivo .css.
Minok
6

Si está utilizando una Mac, puede utilizar el siguiente comando de terminal:

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

Salga (forzar el cierre) de todas las instancias de Chrome. De lo contrario, el siguiente comando no funcionará.

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

La ejecución de este comando en la terminal abrirá Chrome independientemente de dónde esté instalado.

Matt Perejda
fuente
1
"Salir de todas las instancias": esto es cierto en mi experiencia (en Linux). Aparentemente, este es un estado compartido que solo se puede establecer en un nuevo lanzamiento.
Brent Bradburn
0

En windows:

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

En linux:

google-chrome --allow-file-access-from-files file:///C:/test%20-%203.html
Bonn
fuente
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

guardar las líneas anteriores como archivo .bat

Yogesh Jog
fuente
taskkill / F / IM chrome.exe / T Útil para no reiniciar mi computadora
JCH77
0

Dependiendo del archivo que se colocará en el sistema de archivos, siempre que ese archivo no sea un malware, eso sería seguro.

Pero no se preocupe por escribir / leer archivos en el directorio del Sistema de archivos, ya que puede reforzar la seguridad de ese directorio (incluida su herencia) al otorgar un derecho de acceso adecuado y una restricción de seguridad. por ejemplo: leer / escribir / modificar.

De manera predeterminada, el sistema de archivos, el almacenamiento local y el directorio de almacenamiento se encuentran en el directorio "\ Usuarios [Usuario actual] \ AppData \ Local \ Google \ Chrome \ User Data \ Default".

Sin embargo, puede personalizarlo utilizando el indicador "--user-data-dir".

Y esta es una muestra:

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

Espero que esto ayude a cualquiera.

jo0gbe4bstjb
fuente
0

Bueno, es rápido ejecutar un html que necesita permiso o está bloqueado por CORS. Simplemente abra la carpeta usando VSCODE e instale una extensión llamada "servidor en vivo"

Y luego simplemente haga clic en la parte inferior que dice ir en vivo, eso es todo. Captura de pantalla

Prosenjeet Paul
fuente