jQuery HTTP身份验证

有了jQuery,我打电话给Version One Rest API,并需要在HTTP标头中验证用户身份。

我试过了

$.ajax({
        dataType: "jsonp",
        beforeSend: function(xhr){
            xhr.setRequestHeader("Authorization", "Basic xyz"); // xyz usr:pwd Base64 encoded
        },
        url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
        success: function(data, status, xhr) {
            alert("Load was performed.");
        }
    });

$.ajax({
    dataType: "jsonp",
    username:"usr",
    password:"pwd",
    url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
    success: function(data, status, xhr) {
        alert("Load was performed.");
    }
});

但我总是会弹出询问我的凭据(我使用Chrome)。 即使在弹出窗口中输入凭据时,我也没有进行身份验证,并且窗口不断显示。

  • 如何使用HTTP标头中的jQuery验证用户?
  • 有没有办法让密码属性加密不可见? 或者Base64是唯一的方法。 我想通过一个帐户访问服务器,但不希望客户端的用户看到密码(或者在javascript中找到它)。

  • 这不完全不可能,只是有点尴尬。 你可以像这样通过你自己的服务器代理所有的AJAX:

  • 您的JavaScript通过AJAX与您的服务器联系。
  • 您的服务器使用适当的基本身份验证标头(或您需要使用的任何身份验证)将请求设置为https://www10.v1host.com/.../VersionOne/rest-1.v1/...
  • 您的服务器将响应发送回您的脚本,完全按照www10.v1host.com发送给您的服务器。
  • 通过这种方式,密码保持不可见,并且在您对服务器的控制下,客户端代码将获得与来自www10.v1host.com API相同的API。 这种方法可能会引入一点滞后,但这应该是可以管理的。

    当然,你仍然需要考虑浏览器和你的服务器之间的授权过程,但是你应该可以使用你已经拥有的任何授权(可能是cookies和普通的旧登录)。

    您还需要根据API服务条款检查这种技术,以确保您玩的很好。

    链接地址: http://www.djcxy.com/p/49737.html

    上一篇: jQuery HTTP authentication

    下一篇: Scala XML API: Why allow NodeSeq as attribute values?