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

Rom*_*man 5 html javascript ipad ios html5-audio

我使用.htaccess来保护带有密码的网站.

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

只在Ipad上.没有根源,所有原始的ios.在Ipad上使用Chrome和Safari进行测试,总是一样的.

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

这在Android平板电脑或Windows中的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>
Run Code Online (Sandbox Code Playgroud)

.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
Run Code Online (Sandbox Code Playgroud)

shu*_*van 5

这是一个非常古老的问题.Safari浏览器在自动执行某些操作时禁用发送auth params - 使用301-302 http代码重定向或加载媒体文件.看起来这是一个sequrity问题 - Safari不允许访问自动加载的文件.

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

GET /t/i.jpg HTTP/1.0" 200 图像加载很棒.

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

因此,强制auth提示显示的是音频文件.有一种解决方法,但是不够安全.

UPD.以下代码显示第一次访问(img标记)为200的响应,第二次(标记)为207.wav401 audio.

<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"
Run Code Online (Sandbox Code Playgroud)

  • Apple不允许任何人创建自己的浏览器视图,你必须在应用程序中使用Safari嵌入式浏览器,因此Chrome,Opera,Firefox都必须使用iOS中的嵌入式Safari (3认同)