我尝试对使用http://myphotodiary.com的API进行身份验证的Safari进行扩展。它适用于所有不包含特殊字符的密码,如:
å,ä,ö和空间
我现在有以下代码:
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);
此代码适用于所有不包含特殊字符的密码,但如果我将登录信息更改为
var username = "blpninja";
var password = "./ hejä";
它开始失败。
这个确切的代码适用于Safari,但不适用于我将其放入扩展程序。
我也尝试过在身份验证中构建的xmlHttpRequest.open
xmlHttp.open('GET', url, true, username, password);
具有相同的结果。
这是我全球网页的负责人:
<!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>
我收到“无法加载资源:已取消”这些是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)
答案 0 :(得分:2)
不确定也没时间钻研它,但是编码字符串会有帮助吗?
var username = encodeURIComponent("blpninja"), //=> sends: blpninja
password = encodeURIComponent("./ hejä"); //=> sends: .%2F%20hej%C3%A4
在服务器端,它可能已被解码(decodeURIComponent
)