Ajax: HTTP Basic Auth et cookie d'authentification
Je veux stocker l'authentification HTTP de base headerline dans un cookie d'authentification, de sorte que je n'ai pas à traiter avec l'autorisation d'en-tête dans les requêtes suivantes (je suis en utilisant jQuery):
authenticate: function(auth) {
var header = "Basic " + $.base64.encode(auth.username + ":" + auth.password);
document.cookie = "Authorization: " + header;
$.ajax({
type: "GET",
url: "http://someurl",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: auth.success,
error: auth.error
});
},
Alors que cela semble fonctionner pour le premier utilisateur qui se connecte, il ne fonctionne pas pour tous les autres utilisateurs au sein de la session du navigateur, parce que l'autorisation ultérieure en-têtes sont ajoutés et ils ne sont pas écrasés. Je sais que l'on peut remplacer un cookie à l'aide de la name=value
la syntaxe, mais cette syntaxe ne s'applique pas à l'en-tête d'autorisation.
Est-il un moyen de se débarrasser de l'ancien en-tête d'autorisation une fois qu'un nouvel utilisateur se connecte?
Toute aide serait appréciée. Merci, JeHo
- Pouvez-vous modifier le code côté serveur? Quelle langue utilisez-vous (PHP, python, etc.)?
- Le côté serveur est une selfhosted (WebServiceHost) service de données wcf (écrit en c#). Je suis propriétaire de cet hôte, afin que je puisse apporter des modifications à elle - mais je crains que les possibilités sont limitées.
Vous devez vous connecter pour publier un commentaire.
Il semble qu'il ne fonctionne pas pour le premier utilisateur. Le problème, c'est que l'en-tête d'autorisation a probablement été fixé par le navigateur plus tôt (quand j'ai utilisé la boîte de dialogue d'authentification du navigateur).
Ce que je fais maintenant est de stocker les informations de connexion dans une norme nom=valeur du cookie et le paramétrage de l'en-tête d'autorisation manuellement.
Placer le biscuit:
De lire le cookie:
Définir l'en-tête d'autorisation:
Cela semble un peu maladroit, mais il fonctionne.