2

En essayant de faire une extension à Safari qui s'authentifie avec l'API de http://myphotodiary.com. Et cela fonctionne bien, pour tous les mots de passe qui n'avez pas des caractères spéciaux comme:XMLHttpRequest avec des caractères spéciaux dans Safari Extension ne fonctionne pas

å, ä, ö et de l'espace

Je le code suivant actuellement:

var xmlHttp = new XMLHttpRequest(); 

var url = "https://api.myphotodiary.com/user_status.json?api_key=66217f993f25a8a05dd72970473aa2227450dcad"; 

var username = "iphone"; 
var password = "bdbiphone123"; 

var authy = Base64.encode(username+":"+password); 

xmlHttp.open('GET', url, true); 
xmlHttp.setRequestHeader("Authorization", "Basic " + authy); 
xmlHttp.onreadystatechange = function(){ 
if (xmlHttp.readyState == 4){ 
    var data; 
    eval("data="+xmlHttp.responseText); 
    console.log(data); 
} 
}; 
xmlHttp.send(null); 

Cette code fonctionne très bien pour tous les mots de passe qui ne comprennent pas les caractères spéciaux, mais si je change les informations de connexion à

var username = "blpninja"; 
var password = "./ hejä"; 

il commence à échouer.

Ce code exact fonctionne dans Safari, mais pas quand je le mets dans une extension.

J'ai aussi essayé le xmlHttpRequest.open construit dans l'authentification

xmlHttp.open('GET', url, true, username, password); 

avec le même résultat.

C'est ma tête de la page mondiale:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

</head> 

je suis le « Impossible de charger la ressource: annulé » et ce sont les en-têtes envoie Safari:

Authorization:Basic YmxwbmluamE6Li8gaGVqw6Q= 
Content-Type:text/xml; charset=utf-8 
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; sv-se) AppleWebKit/533.16 (KHTML, like Gecko) 

Répondre

2

Je ne sais pas et pas le temps d'y plonger, mais peut-être que l'encodage des chaînes aidera?

var username = encodeURIComponent("blpninja"), //=> sends: blpninja 
    password = encodeURIComponent("./ hejä"); //=> sends: .%2F%20hej%C3%A4 

sur le côté serveur, il a peut-être ne pas être décodé (decodeURIComponent)

+0

Je viens de résoudre le problème par encodeURIComponent (mot de passe), puis en utilisant la construction en fonction auth dans xmlHttpRequest.open() THX! – Sebastian

+0

Je vais vous envoyer un gâteau! :) – Sebastian

+1

Je suis heureux d'avoir pu vous aider. Kladdkaka serait bien ;-) – KooiInc