提问者:小点点

.htaccess 受密码保护的网站在 Ipad 上每次重新加载页面时都需要密码


我使用.htaccess通过密码保护网站。

如果我在那个网站上使用html5音频元素,我的Ipad在每次重新加载时都需要网站密码,尽管它保存在浏览器中。

只在Ipad上。不root,全是原创ios。用Ipad上的Chrome和Safari测试,都是一样的。

如果页面上没有音频元素,则不需要密码。

这不会发生在Windows中的Android平板电脑或Firefox上。

我可以编写什么程序来防止Ipad要求密码?

我使用本网站的以下代码。

<!DOCTYPE HTML>
<html>
<head>
<title>Audio</title>
</head>
<body>

<script>
function play(){
var audio = document.getElementById("audio");
audio.play();
}
</script>

<input type="button" value="PLAY"  onclick="play()">
<audio id="audio" src="./207.wav"></audio>
</body>
</html>

.htaccess:

AuthType Basic
AuthName name123
AuthUserFile /somepath/.htpasswd
require valid-user
SetEnv no-gzip
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
AddDefaultCharset UTF-8

共1个答案

匿名用户

这是一个非常古老的问题。Safari浏览器在自动执行某些操作时禁用发送身份验证参数——使用301-302超文本传输协议代码重定向或加载媒体文件。看起来这是一个安全问题——Safari不允许访问自动加载的文件。

让我们用服务器日志检查它(我已经在页面中添加了一个图像):

GET /t/i.jpgHTTP/1.0"200图像加载很棒。

GET /t/207.wavHTTP/1.0"401音频未加载,显示提示。

所以是音频文件强制auth prompt显示。有一个解决方法,但是不够安全。

UPD。以下代码显示了第一次访问(img标签)到207.wav的200响应和第二次访问(音频标签)的401响应。

<img src="./207.wav" width=200><br>
<audio id="audio" src="./207.wav"></audio>

217.118.81.250 - ivan [11/Feb/2017:20:32:13 +0300] "GET /t/207.wav HTTP/1.0" 200 ... Safari/602.1"
217.118.81.250 - - [11/Feb/2017:20:32:15 +0300] "GET /t/207.wav HTTP/1.0" 401 ... Safari/602.1"