我在javascript方面有些新手,但我试图调用一个JSON Web服务,需要使用jQuery进行基本身份验证(或任何真正有效的方法)。
我无法在Google上找到任何真正的答案。我正在尝试做什么?
答案 0 :(得分:10)
您需要设置相应的请求标头以传递凭据。例如,请参阅here。
$.getJSON({
'url': 'http://host.com/action/',
'otherSettings': 'othervalues',
'beforeSend': function(xhr) {
//May need to use "Authorization" instead
xhr.setRequestHeader("Authentication",
"Basic " + encodeBase64(username + ":" + password)
},
success: function(result) {
alert('done');
}
});
仅供参考我搜索了Google jquery post with basic auth
,这是第一个链接。
答案 1 :(得分:7)
以下是使用jQuery进行复制和粘贴需求的方法:
$.ajax({
url: "/somewhere",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + window.btoa(username + ":" + password));
},
success: function(result) {
console.log(arguments);
}
});
答案 2 :(得分:-5)
简单。
在asp.net中创建对服务的引用。创建一个网页(没有UI),并在后面的代码中创建多个方法,这些方法是该服务的“包装器”(在C#/ VB.NET中)。使用[WebMethod]装饰方法并将WebMethod的序列化设置为JSON。
或者,您可以通过为json Web服务创建包装器,对任何其他语言(珍珠,php,等等)执行相同的操作。
您需要该包装器的原因是因为这样可以避免JS中的跨站点脚本...限制。此外,如果您的页面是通过HTTPS提供的,那么您对包装器的JS调用也将通过HTTPS,因此不必担心安全性。
您的JS包装器将负责协商连接,身份验证等......
您其他网页中的javascript可以发布到此页面中的方法:
$.post('pagename/method_name', {data:value}, callback(){
});
或$ .post,$ .get,$ .ajax ......一切正常。