web-dev-qa-db-fra.com

Authentification de base avec XMLHTTPRequest

J'essaie d'utiliser XMLHTTPRequest pour obtenir une mise à jour sur Twitter.

var XMLReq = new XMLHttpRequest();
XMLReq.open("GET", "http://Twitter.com/account/verify_credentials.json", false, "TestAct", "password");
XMLReq.send(null);

Cependant, en utilisant mon renifleur, je ne vois aucun en-tête d'autorisation passer. Par conséquent, je reçois une réponse d'erreur 401 de Twitter.

Le compte et le mot de passe sont correctement entrés.

Quelqu'un a tenté cela? Quelqu'un peut-il me donner quelques conseils? Je vous remercie.

22
x1a0

Vous avez juste besoin d'ajouter un en-tête d'autorisation, un nom d'utilisateur et un mot de passe dans une chaîne encodée en base64 comme suit.

XMLReq.setRequestHeader("Authorization", "Basic " + btoa("username:password"));
64
Vitor Arbex

Dans les demandes d'origine croisée, vous devez définir explicitement l'indicateur withCredentials si vous souhaitez que les informations d'identification de l'utilisateur soient envoyées.

Voir http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute (où informations d'identification de l'utilisateur inclut l'authentification HTTP)

9
Thomas Broyer

En raison de la politique d'origine, vous ne pouvez pas effectuer une requête XMLHttpRequest de votre domaine vers un autre domaine. Par exemple. vous ne pouvez pas utiliser http://Twitter.com/... URL, sauf si votre script a été chargé à partir de Twitter.com. Si votre script est chargé à partir de http://localhost/, la demande AJAX doit également être envoyée à localhost.

3
mhaller