Ajax API调用的Base64身份验证

Bla*_*ial 7 ajax jquery

我正在尝试获得基本的API调用,但API提供程序不提供任何开发人员支持.它们要求每个呼叫都在base64基本身份验证标头中发送.当我使用他们的在线API测试实用程序时,我的密钥是有效的,但我不能让它在我自己的代码或JSFiddle.net中工作.我甚至试图复制从我的代码中的测试实用程序返回的"身份验证:基本...."值,但这不起作用.

我在Stackoverflow中查看了很多示例,并且我对其他API使用类似的代码没有问题.base64基本身份验证对我来说是新的,当我在IE中运行代码时,调试器会声明一个我找不到的语法错误.如果发生任何错误,我期待401错误.

有关错误的任何想法或其他调试方法?

$(document).ready(function() {
    var mySecret = "somevalue";
    var myClientId = "somevalue";
    $.ajax({
        url: "https://www.udemy.com/api-2.0/courses/",
        type: 'GET', 
        dataType: "json", 
        contentType: "text/plain",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", "Basic " + btoa(myClientId+":"+ mySecret));
        },
        success: function(data) {
            alert("hi");
        }
    }); 
});
Run Code Online (Sandbox Code Playgroud)

Bre*_*dly 5

你可能在这里得到的是CORS或者问题Cross Origin Resource Sharing.它可以防止网站随意提出请求.它的原因很复杂,但它会让你安全!虽然,这是一个很大的痛苦.

启动您方便的花花公子Chrome Dev Tools,并查看该网络请求实际发生的情况.由于同源策略(CORs),它在JSFiddle中无效.

您可以在浏览器中获取JSON,因为这不是跨站点请求.查看哪些标头来回发送,并查看Udemy API门户中是否有一种方法可以OriginAllow-Origin标头设置可接受的方式.您的IP地址可能是您在本地工作的.