Javascript 在ajax json脚本中添加基本http授权

Javascript 在ajax json脚本中添加基本http授权,javascript,ajax,json,basic-authentication,Javascript,Ajax,Json,Basic Authentication,不确定如何在ajax调用中为JSON信息添加身份验证。我试图按照给出的例子来检查域名的可用性,但是它一直在做一个http表单弹出窗口,询问用户名和密码 我认为我的代码中的所有内容都是正确的: function domainAvailabilityCheck(domain) { $.ajax({ type: 'GET', url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',

不确定如何在ajax调用中为JSON信息添加身份验证。我试图按照给出的例子来检查域名的可用性,但是它一直在做一个http表单弹出窗口,询问用户名和密码

我认为我的代码中的所有内容都是正确的:

function domainAvailabilityCheck(domain) {
    $.ajax({
        type: 'GET',
        url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',
        beforeSend: setHeader,
        success: function(spitback) {
            console.log(spitback.content.domainList.status);
        },
        dataType:'jsonp'
    });
}

var setHeader = function(xhr) {
    xhr.setRequestHeader('Authorization', 'Basic YWtpcmF0ZXN0OmR0d3N0ZXN0');
}

不确定我做错了什么。

您的beforeSend不允许Jquery传入xhr对象以进行标题修改。线路应该是

beforeSend: function(xhr) { xhr.setRequest(......); } // all-in-one, no extra function needed

你亦可:

var setHeader = function (xhr) {
    xhr.setRequestHeader('Authorization', 'Basic YWtpcmF0ZXN0OmR0d3N0ZXN0');
}

function domainAvailabilityCheck(domain) {
    $.ajax({
        type: 'GET',
        url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',
        beforeSend: setHeader,
        success: function(spitback) {
            console.log(spitback.content.domainList.status);
        },
        dataType:'jsonp'
    });
}

实际上,将保存匿名函数的变量setHeader放在哪里并不重要,但这样更容易阅读(对于我和我的软编译器…;)

如何计算基本身份验证头?应该是字符串文字username:password()@tozew的base 64编码,这可能是我的问题。我使用的是示例页面上列出的基本身份验证。生成我自己的http身份验证可以解决我的问题吗?那么您建议如何创建此字符串
var setHeader = function (xhr) {
    xhr.setRequestHeader('Authorization', 'Basic YWtpcmF0ZXN0OmR0d3N0ZXN0');
}

function domainAvailabilityCheck(domain) {
    $.ajax({
        type: 'GET',
        url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',
        beforeSend: setHeader,
        success: function(spitback) {
            console.log(spitback.content.domainList.status);
        },
        dataType:'jsonp'
    });
}