猿问

将基本身份验证与jQuery和ajax结合使用。

将基本身份验证与jQuery和ajax结合使用。

我试图通过浏览器创建一个基本的身份验证,但我无法真正做到这一点。

如果这个脚本不在这里,浏览器身份验证将接管,但我想告诉浏览器,用户即将进行身份验证。

地址应该是:

http://username:password@server.in.local/

我有一份表格:

<form name="cookieform" id="login" method="post">
      <input type="text" name="username" id="username" class="text"/>
      <input type="password" name="password" id="password" class="text"/>
      <input type="submit" name="sub" value="Submit" class="page"/></form>

还有一个剧本:

var username = $("input#username").val();var password = $("input#password").val();function make_base_auth(user, password) {
  var tok = user + ':' + password;
  var hash = Base64.encode(tok);
  return "Basic " + hash;}$.ajax  ({
    type: "GET",
    url: "index1.php",
    dataType: 'json',
    async: false,
    data: '{"username": "' + username + '", "password" : "' + password + '"}',
    success: function (){
    alert('Thanks for your comment!');
    }});


月关宝盒
浏览 848回答 4
4回答

RISEBY

使用jQuery的beforeSend回调以添加带有身份验证信息的HTTP标头:beforeSend:&nbsp;function&nbsp;(xhr)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;xhr.setRequestHeader&nbsp;("Authorization",&nbsp;"Basic&nbsp;"&nbsp;+&nbsp;btoa(username&nbsp;+&nbsp;":"&nbsp;+&nbsp;password));},

千巷猫影

一年后情况会发生怎样的变化。除了头属性之外,xhr.setRequestHeader,当前的jQuery(1.7.2+)包含用户名和密码属性,$.ajax打电话。$.ajax({ &nbsp;&nbsp;type:&nbsp;"GET", &nbsp;&nbsp;url:&nbsp;"index1.php", &nbsp;&nbsp;dataType:&nbsp;'json', &nbsp;&nbsp;username:&nbsp;username, &nbsp;&nbsp;password:&nbsp;password, &nbsp;&nbsp;data:&nbsp;'{&nbsp;"comment"&nbsp;}', &nbsp;&nbsp;success:&nbsp;function&nbsp;(){ &nbsp;&nbsp;&nbsp;&nbsp;alert('Thanks&nbsp;for&nbsp;your&nbsp;comment!');&nbsp; &nbsp;&nbsp;}});从注释和其他答案中进行编辑:要清楚-以便在不需要验证的情况下先发制人地发送身份验证。401 Unauthorized回应,而不是setRequestHeader(前1.7)使用'headers':$.ajax({ &nbsp;&nbsp;type:&nbsp;"GET", &nbsp;&nbsp;url:&nbsp;"index1.php", &nbsp;&nbsp;dataType:&nbsp;'json', &nbsp;&nbsp;headers:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;"Authorization":&nbsp;"Basic&nbsp;"&nbsp;+&nbsp;btoa(USERNAME&nbsp;+&nbsp;":"&nbsp;+&nbsp;PASSWORD) &nbsp;&nbsp;}, &nbsp;&nbsp;data:&nbsp;'{&nbsp;"comment"&nbsp;}', &nbsp;&nbsp;success:&nbsp;function&nbsp;(){ &nbsp;&nbsp;&nbsp;&nbsp;alert('Thanks&nbsp;for&nbsp;your&nbsp;comment!');&nbsp; &nbsp;&nbsp;}});

qq_花开花谢_0

使用发送前回调若要添加包含身份验证信息的HTTP标头,如下所示:var&nbsp;username&nbsp;=&nbsp;$("input#username").val();var&nbsp;password&nbsp;=&nbsp;$("input#password").val();&nbsp;&nbsp;function&nbsp;make_base_auth(user,&nbsp;password)&nbsp;{ &nbsp;&nbsp;var&nbsp;tok&nbsp;=&nbsp;user&nbsp;+&nbsp;':'&nbsp;+&nbsp;password; &nbsp;&nbsp;var&nbsp;hash&nbsp;=&nbsp;btoa(tok); &nbsp;&nbsp;return&nbsp;"Basic&nbsp;"&nbsp;+&nbsp;hash;}$.ajax&nbsp;&nbsp;({ &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;"GET", &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;"index1.php", &nbsp;&nbsp;&nbsp;&nbsp;dataType:&nbsp;'json', &nbsp;&nbsp;&nbsp;&nbsp;async:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;'{}', &nbsp;&nbsp;&nbsp;&nbsp;beforeSend:&nbsp;function&nbsp;(xhr){&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.setRequestHeader('Authorization',&nbsp;make_base_auth(username,&nbsp;password));&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;function&nbsp;(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Thanks&nbsp;for&nbsp;your&nbsp;comment!');&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}});

牛魔王的故事

或者,只需使用1.5中引入的Header属性:headers:&nbsp;{"Authorization":&nbsp;"Basic&nbsp;xxxx"}参考资料:jQueryAjaxAPI
随时随地看视频慕课网APP
我要回答