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).