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

Javascript 如何使用jQuery调用需要基本身份验证的JSON web服务?,javascript,jquery,json,Javascript,Jquery,Json,我对javascript有点生疏,但我正在尝试调用一个JSON web服务,该服务需要使用jQuery进行基本身份验证(或任何真正有效的东西) 我还没能在谷歌上找到任何真正的答案。我想做的事可能吗 您需要设置适当的请求头来传递凭据。例如,请参见 仅供参考,我在谷歌上用basic auth搜索jquery帖子,这是第一个链接。简单 在asp.net中创建对服务的引用。创建一个网页(没有UI)并在代码隐藏中创建多个方法,这些方法是该服务的“包装器”(在C#/VB.NET中)。用[WebMethod]

我对javascript有点生疏,但我正在尝试调用一个JSON web服务,该服务需要使用jQuery进行基本身份验证(或任何真正有效的东西)


我还没能在谷歌上找到任何真正的答案。我想做的事可能吗

您需要设置适当的请求头来传递凭据。例如,请参见

仅供参考,我在谷歌上用basic auth搜索jquery帖子,这是第一个链接。

简单

在asp.net中创建对服务的引用。创建一个网页(没有UI)并在代码隐藏中创建多个方法,这些方法是该服务的“包装器”(在C#/VB.NET中)。用[WebMethod]修饰方法,并将WebMethod的序列化设置为JSON

或者,您可以通过为json web服务制作一个包装器,对任何其他语言(pearl、php等)执行相同的操作

您需要该包装器的原因是,这样可以避免跨站点脚本编写。。。JS中的限制。此外,如果您的页面是通过HTTPS提供的,那么您对包装器的JS调用也将通过HTTPS提供,因此不必担心安全性

您的JS包装器将负责协商连接、身份验证等

其他页面中的javascript可以发布到此页面中的方法,如下所示:

$.post('pagename/method_name', {data:value}, callback(){

});

或者$.post、$.get、$.ajax。。。所有这些都能正常工作。

以下是使用jQuery进行复制和粘贴的方法:

$.ajax({
    url: "/somewhere",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Basic " + window.btoa(username + ":" + password));
    },
    success: function(result) {
        console.log(arguments);
    }
});

参见这里的示例:+1:伟大的问题;探索了我从未想过的Ajax的一个方面。JavaScript是否在与web服务位于同一域的页面上执行?encodeBase64仅转换为Base64。用户名和密码基本上以明文形式发送。正确,这就是基本身份验证的工作原理。我也不推荐,但这是OP要求的。你可以使用https而不是http,那么就不清楚text你想在代码中阻止“写入”用户名和密码吗?如果是javascript,任何人都可以看到它。我们有哪些选择?@fabricioflores:这是一个很好的观点。从OP的例子中不清楚这是如何使用的。可能用户已经知道正在使用的用户名/密码,因此这是一种方便。如果网站用户不应该知道第三方集成的某种API密钥,那么这是很危险的,因为网站所有者的安全信息会在不经意间泄露给用户。在后一种情况下,我将使用服务器端调用,而不是JavaScript。-1:没有解决这个问题。OP没有提到服务器端技术。@bleepzter:哇,伙计。放松点!您在这里得到了一个很好的答案,但对于OP的场景来说可能没有必要。我知道你的感受,但我已经用
-1
得到了很多答案。没关系,这是学习过程的一部分。坚持住:)布莱普兹特-老实说,如果你不能接受一点批评,你在这项工作中会很艰难。2互联网点几乎不值得这么麻烦。虽然这看起来似乎是一种试图将JSONP描述为交叉脚本的解决方案的尝试,(1)OP没有询问交叉脚本,只有auth,(b)它没有解释所有这些是如何帮助的,(c)用户可能已经在做了。这并不意味着这是一个无效的建议。我理解如果你认为这个建议更。。。比op要求的更复杂。好的但就知识和内容而言,这是一个有效的建议。opp明确要求
JSON web服务需要使用jQuery(或任何可以工作的东西)进行基本身份验证。
因此,作为一个暗中操作,这个建议是可以接受的。我想让你找到一个不使用服务器端技术,只在JS/HTML中显式开发的开发人员。请这样做。给我找那个人。我很乐意删除我的帖子。谢谢你滥用这个系统!
$.ajax({
    url: "/somewhere",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Basic " + window.btoa(username + ":" + password));
    },
    success: function(result) {
        console.log(arguments);
    }
});