J'ai actuellement une application Palm WebOS qui utilise une requête Ajax.Request pour se connecter à un service Web en utilisant l'authentification de base. Pour envoyer le nom d'utilisateur et mot de passe, je l'insère simplement dans l'url (http://username:[email protected]:port/) qui fonctionne très bien, attendez-vous lorsque le mot de passe contient autre chose que des caractères alphanumériques (par exemple, un utilisateur m'a envoyé un e-mail "et un" & "dans son mot de passe, et il n'a pas pu se connecter car les symboles n'étaient pas correctement analysés pour l'url). Y at-il un moyen d'envoyer les informations d'identification dans l'URL afin que je puisse autoriser les utilisateurs à utiliser autre chose que des caractères alphanumériques dans leurs mots de passe?Utilisation de l'authentification avec Ajax.Request
var username = cookie.get().servers[this.serverIndex].username;
var password = cookie.get().servers[this.serverIndex].password;
this.auth = 'Basic ' + Base64.encode(username + ':' + password);
var baseUrl = 'http://' + url + ':' + port + '/gui/';
this.baseUrl = baseUrl;
var request = new Ajax.Request(this.tokenUrl, {
method: 'get',
timeout: 2000,
headers: {
Authorization: this.auth
},
onSuccess: successFunc,
onFailure: this.failure.bind(this)
});
La réponse est (je l'ai enlevé l'URL pour des raisons de sécurité):
{"request": {"options": {"method": "get", "asynchronous": true, "contentType": "application/x-www-form-urlencoded", "encoding": "UTF-8", "parameters": {}, "evalJSON": true, "evalJS": true, "timeout": 2000, "headers": {"Authorization": "Basic c3VubW9yZ3VzOmZyb2dneUAlMjY="}}, "transport": {"readyState": 4, "onloadstart": null, "withCredentials": false, "onerror": null, "onabort": null, "status": 401, "responseXML": null, "onload": null, "onprogress": null, "upload": {"onloadstart": null, "onabort": null, "onerror": null, "onload": null, "onprogress": null}, "statusText": "", "responseText": "", "UNSENT": 0, "OPENED": 1, "HEADERS_RECEIVED": 2, "LOADING": 3, "DONE": 4}, "url": ""
Ok, essayé, et je reçois une erreur 401 ... édité mon poste avec mon appel Ajax.Request et ma réponse ... –
Ok, je l'ai eu le travail! J'ai dû changer les 'headers' en 'requestHeaders', et tout fonctionne très bien! Merci! –