你如何使用jQuery调用需要基本身份验证的JSON Web服务?

时间:2011-05-17 02:56:50

标签: javascript jquery json

我在javascript方面有些新手,但我试图调用一个JSON Web服务,需要使用jQuery进行基本身份验证(或任何真正有效的方法)。

我无法在Google上找到任何真正的答案。我正在尝试做什么?

3 个答案:

答案 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 ......一切正常。