Kon*_*ner 20 javascript .htaccess es6-modules
当我运行以下JavasScript时,我可以成功登录但不能访问模块.如何将身份验证传递给他们?
示例代码
<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>
Run Code Online (Sandbox Code Playgroud)
GET
[...]mymodule.js [HTTP/1.1 401 Authorization Required 1ms]
在Firefox 54上使用基本身份验证的.htaccess打开它(dom.moduleScripts.enabled,它可以在没有.htaccess的情况下工作).
的.htaccess
AuthType Basic
AuthName "Internal Area"
AuthUserFile /opt/.../.htpasswd
Require valid-user
Run Code Online (Sandbox Code Playgroud)
似乎脚本type="module"
不会获取带有所需凭据数据的javascript文件,以便服务器对用户进行身份验证.
所以你得到了 HTTP/1.1 401 Authorization Required
要解决此问题,您可以crossorigin
向脚本标记添加属性:
<script type="module" crossorigin src="./js/mymodule.js"></script>
<script type="module">
import * as mymodule from "./js/mymodule.js";
mymodule.runme();
</script>
Run Code Online (Sandbox Code Playgroud)
这将通知浏览器发出"凭证"请求(请求知道HTTP cookie和HTTP身份验证信息).
看来 HTML 是由 Firefox 缓存的,并且您没有向服务器进行身份验证。
您可以尝试以下操作:
防止 html 文件缓存。添加到.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>
Run Code Online (Sandbox Code Playgroud)
使用 PHP 扩展代替 HTML
归档时间: |
|
查看次数: |
673 次 |
最近记录: |