繁体   English   中英

Select2 Ajax 请求授权未发送

[英]Select2 Ajax request authorization not being sent

尝试向需要 Auth 令牌的端点发出 get 请求。 但无论何时发出请求 - 它都会返回 401 错误(“需要授权 header”)。令牌是从 chrome.storage 异步检索的。但似乎没有在 ajax 请求中发送。感谢任何帮助。

ajax: {
      type: "GET",
      beforeSend: async function (request) {
        var token = await bearerToken();
        request.setRequestHeader("Authorization", token);
      },
      url: function (params) {
        return getChannelURL(params.term);
      },
      dataType: "json",
      data: function (response) {
        // data -> entire json object
        return response;
      },
      // data.data -> array containing all the channel elements
      processResults: function (data, params) {
        for (var i = 0; i < data.data.length; i++) {
          data.data[i].text = data.data[i].text || data.data[i].name;
        }
        return {
          results: data.data,
        };
      },
      cache: true,
    },
    minimumInputLength: 1,
    placeholder: "Select a Channel",
    width: "resolve",
    templateResult: formatChannelData,
  });

下面是存储令牌的function

bearerToken = async () => {
    var tokenRetrieved = await helper.getLocalStorage('tokenElement')
    var token = tokenRetrieved.tokenElement
    return ("Bearer "+ token);
}

您的 AJAX 应如下所示:

async function sendAJAX() {
var token = await bearerToken();
ajax: {
      type: "GET",
      beforeSend: async function (request) {
        request.setRequestHeader("Authorization", token);
      },
      url: function (params) {
        return getChannelURL(params.term);
      },
      dataType: "json",
      data: function (response) {
        // data -> entire json object
        return response;
      },
      // data.data -> array containing all the channel elements
      processResults: function (data, params) {
        for (var i = 0; i < data.data.length; i++) {
          data.data[i].text = data.data[i].text || data.data[i].name;
        }
        return {
          results: data.data,
        };
      },
      cache: true,
    },
    minimumInputLength: 1,
    placeholder: "Select a Channel",
    width: "resolve",
    templateResult: formatChannelData,
  });
}
}

function 将等待创建令牌,然后发送 AJAX。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM