modules from es6 create javascript .htaccess es6-modules

from - import javascript html



Los módulos de Javascript ES6 no pasan la autenticación básica.htaccess (2)

Parece que Firefox almacena en caché el HTML y no se autentica en el servidor.

Puedes probar lo siguiente:

Evitar el almacenamiento en caché de archivos html. Añadir a .htaccess :

<filesMatch "/.(html)$"> FileETag None <ifModule mod_headers.c> Header unset ETag Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "Sat, 01 Jan 2000 00:00:00 GMT" </ifModule> </filesMatch>

usar la extensión de PHP para en lugar de HTML

Cuando ejecuto el siguiente JavasScript, puedo iniciar sesión correctamente pero no puedo acceder a los módulos. ¿Cómo puedo pasarles la autenticación?

Código de muestra

<DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script type="module"> import * as mymodule from "./js/mymodule.js"; mymodule.runme(); </script> </body> </html>

Al abrir esto con un .htaccess con resultados de autenticación básicos en GET [...]mymodule.js [HTTP/1.1 401 Authorization Required 1ms] en Firefox 54 (dom.moduleScripts.enabled, funciona sin .htaccess).

.htaccess

AuthType Basic AuthName "Internal Area" AuthUserFile /opt/.../.htpasswd Require valid-user


Parece que la secuencia de comandos con type="module" no recupera el archivo javascript con los datos de credenciales necesarios para autenticar al usuario por el servidor.

Por lo tanto, obtiene HTTP/1.1 401 Authorization Required

Para resolver este problema, puede agregar el atributo de origen crossorigin a la etiqueta de secuencia de comandos:

<script type="module" crossorigin src="./js/mymodule.js"></script> <script type="module"> import * as mymodule from "./js/mymodule.js"; mymodule.runme(); </script>

Esto informará al navegador para realizar una solicitud "acreditada" (solicitud que tenga en cuenta las cookies HTTP y la información de autenticación HTTP).