2017-01-02 112 views
5

我使用.htaccess来用密码保护网站。.htaccess受密码保护的网站需要在每个页面重新加载Ipad的密码

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

只在Ipad上。没有扎根,所有原始的ios。 通过Ipad上的Chrome和Safari测试,始终如一。

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

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

我可以编程什么来防止Ipad询问密码?

我从本网站使用以下code

<!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 
+0

我想你需要提供的.htaccess文件的其他麻烦拍摄? – cytsunny

+0

当然,谢谢。 – Roman

回答

3

这是一个very old problem。 Safari浏览器在执行某些操作时禁止发送auth参数自动 - redirect with 301-302 http codes或加载媒体文件。看起来这是一个sequrity问题 - Safari不允许访问文件,自动加载

让我们从服务器日志检查(我已经添加到页面的图像):

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

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

所以它是强制auth提示显示的音频文件。有一个workaround,但是不够安全。

UPD。以下代码显示第一次访问的200响应(img标记)到207.wav,第二次显示401(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" 
+0

你的意思是一般的ios?因为ios上的Chrome也出现这个问题。 – Roman

+1

如果您查看'User-agent',即使它是Chrome或Opera浏览器*,您也会看到类似于AppleWebKit/602.1.50 blabla Safari/602.1的*。我没有意识到iOs中浏览器的内部架构,但它看起来像Safari一样使用相同的引擎'AppleWebKit'。 –

+2

Apple不允许任何人创建自己的浏览器视图,您必须在那里使用Safari嵌入式浏览器,所以Chrome,Opera,Firefox都必须使用iOS –