使用javascript控制HTTP基本身份验证

时间:2010-10-21 01:30:21

标签: javascript basic-authentication

我想检查一个URL是否受到使用javascript的Http Basic身份验证的保护。 以下是我到目前为止的情况:

  function showFailure(){ alert("FAILED ") }
  function showSuccess(){ alert("SUCCESS") }

  var myRequest = new Request({
    url: 'http://localhost/access_protected_HTTP_BASIC', 
    method: 'get', 
    onSuccess: showSuccess,
    onFailure: showFailure
  }).send();

但实际上这会打开浏览器登录弹出窗口以访问资源。 有没有办法不触发弹出窗口?

谢谢!

注意:我在这个例子中使用了mootools,但是我会采用任何可以解决这个问题的javascript示例:)

2 个答案:

答案 0 :(得分:7)

根据answer to a similar question,您可以在发送请求时手动传递用户名和密码。 (根据MooTools Docsuserpassword参数就是这样做的。)

此外,XMLHttpRequest spec说:

  

如果身份验证失败,则授权不在作者请求标头列表中,请求用户名为非空,请求密码为非空,用户代理不得提示最终用户为用户名和密码。

这意味着您可以设置虚拟用户名和密码,浏览器不会提示用户。如果您返回401状态代码,则表示需要授权。

答案 1 :(得分:0)

您需要做的就是添加一个标头Authorization: Basic *Base64EncodedString* *Base64EncodedString* base64Encode(username+':'+password),它应该很容易找到base64encode函数。 YMMV