2017-01-02 1 views
5

J'utilise .htaccess pour protéger un site Web avec un mot de passe..htaccess Mot de passe protégé site Web nécessite Mot de passe à chaque page recharger sur Ipad

Si j'utilise des éléments audio html5 sur ce site Web, mon iPad nécessite le mot de passe du site Web à chaque rechargement, bien qu'il soit enregistré dans le navigateur.

Seulement sur Ipad. Pas enracinée, tous les ios originaux. Testé avec Chrome et Safari sur Ipad, toujours pareil.

S'il n'y a pas d'élément audio sur la page, le mot de passe n'est pas nécessaire.

Cela ne se produit pas sur une tablette Android ou Firefox dans Windows.

Que puis-je programmer pour empêcher l'Ipad de demander le mot de passe?

J'utilise les code de ce site Web.

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

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

Je suppose que vous devez fournir le fichier .htaccess pour le dépannage? – cytsunny

+0

Bien sûr, merci. – Roman

Répondre

3

Il est un very old problem. Le navigateur Safari désactive l'envoi de paramètres d'authentification lorsque vous faites quelque chose automatiquement - redirect with 301-302 http codes ou en chargeant le fichier multimédia. Cela ressemble à un problème de séquence - Safari ne permet pas l'accès à un fichier, chargé automatiquement.

Vérifions avec les journaux de serveur (je l'ai ajouté une image à la page):

GET /t/i.jpg HTTP/1.0" 200 images sont chargées grande.

GET /t/207.wav HTTP/1.0" 401 L'audio n'est pas chargé, l'invite est affichée.

C'est donc le fichier audio qui force l'invite d'authentification à s'afficher. Il y a un workaround, mais n'est pas assez sécurisé.

UPD. Le code suivant indique 200 réponses pour le premier accès (balise img) à 207.wav et 401 pour le second (balise 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

Vous voulez dire ios en général? Parce que ce problème arrive également avec Chrome sur ios. – Roman

+1

Si vous regardez 'User-agent', vous voyez quelque chose comme' AppleWebKit/602.1.50 blabla Safari/602.1' * même s'il s'agit d'un navigateur Chrome ou Opera *. Je ne suis pas au courant de l'architecture interne des navigateurs dans les iO, mais on dirait qu'ils utilisent le même moteur 'AppleWebKit' que Safari. –

+2

Apple ne permet pas à quiconque de créer son propre navigateur Naviguer, vous devez utiliser le navigateur intégré Safari dans les applications de sorte que Chrome, Opera, Firefox doivent tous utiliser le Safari intégré dans iOS –