我正在尝试使用需要调用以获取具有基本 HTTP 身份验证的 Json 的 API。我对javascript并不精通。
我拥有的代码是:
<script type="text/javascript">
$.getJSON({
'url': 'http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization",
"Basic " + encodeBase64("ABCDEF" + ":" + password));
},
success: function(result) {
alert('done');
},
error: function(result) {
alert('no');
}
});
</script>
我希望这会称为成功或错误之一。所以输出应该是一个警告说“完成”,或者一个警告说“不”。甚至开发者控制台中的错误告诉我出了什么问题。
我什么也没有得到,也没有警报显示,控制台中也没有错误。有什么想法吗?
谢谢,
编辑:使用萤火虫我看到请求标头是:请求标头显示为:
OPTIONS /api/KIS/Institutions.JSON?pageIndex=1&pageSize=25 HTTP/1.1
Host: data.unistats.ac.uk
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: null
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Connection: keep-alive
这似乎不正确,因为它应该是:授权:基本 TheSecurityKey
响应为 405,方法不允许重新加载页面以获取源:http ://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25
响应标头:
HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET
Content-Length: 1725
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 16 Aug 2013 21:00:11 GMT
当我从我设置的服务器尝试时
可以在这里看到: http: //spindroid.co.uk/tt/byUniversity.html
部分解决方案
使用 jsonp 它会收到响应,但未附加标头,因此我缺少身份验证。
<script type="text/javascript">
$(document).ready(function () {
jQuery.support.cors = true;
$.ajax({
'type': "GET",
'dataType': 'jsonp',
'url': 'https://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization",
"Basic " + btoa("AAA"));
console.error("Basic " + btoa("AAA"));
},
success: function(result) {
alert('done');
},
error: function(jqXHR, status, error){ console.log(status, error); }
});
}
); </script>