跨域jQuery ajax调用不起作用

Mic*_*old 2 javascript ajax jquery cross-domain

我遇到了这个代码的问题,我似乎无法让它工作.我收到此调用的典型错误是"无法加载资源:服务器响应状态为401(未授权)".

$('#btnZendesk').click(function () {
      $.ajax({
          url: "https://flatlandsoftware.zendesk.com/api/v2/topics/22505987.json",
          type: 'GET',
          crossDomain: true,
          xhrFields: {
              withCredentials: true
          },
          cache: false,
          dataType: 'jsonp',
          processData: false,
          data: 'get=login',
          timeout: 2000,

          username: "test@test.com",
          password: "test",
          success: function (data, textStatus, response) {
              alert("success");
          },
          error: function (data, textStatus, response) {
              alert(data);
          }
      });
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 6

问题是您尝试访问的资源受基本身份验证保护.

您可以beforeSend在jQuery回调中使用以添加具有身份验证详细信息的HTTP标头,例如:

beforeSend: function (xhr) {
  xhr.setRequestHeader ("Authorization", "Basic XXXXXX"); 
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用jQuery来完成它 ajaxSetup

$.ajaxSetup({
  headers: { 'Authorization': "Basic XXXXX" }
});
Run Code Online (Sandbox Code Playgroud)

编辑

一些指向上述功能的链接

编辑2

Authorization标头构造如下:

  • 用户名和密码连接成一个字符串"username:password",结果字符串使用Base64编码

例:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Run Code Online (Sandbox Code Playgroud)