【问题标题】:cURL to jQuery AJAX conversioncURL 到 jQuery AJAX 的转换
【发布时间】:2017-11-02 19:08:07
【问题描述】:

我为此绞尽脑汁,但似乎无法找出解决方案,因此请谦虚地寻求您的帮助。我在 chrome 上使用 restlet 客户端,它使用 cURL 命令从服务器获取 json。我需要将此 curl 命令转换为 AJAX,并且我将提供尽可能多的代码。你能帮我把它转换成 jQuery 的 Ajax 吗?

cURL Command: 

curl -i -L -X GET \
   -H "Authorization:Basic base64username:base64password" \
 'https://internalserverurl'

以下是我的 jQuery AJAX 方法:

function make_base_auth(user, password) {
            var tok = user + ':' + password;
            var hash = Base64.encode(tok);
            return "Basic " + hash;
        }

        function getData() {
            $.ajax({
                url: "https://internalurl",
                beforeSend: function(xhr) { 
                  xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
                },
                type: 'GET',
                dataType: 'json',
                contentType: 'application/json',
                processData: false,
                success: function (data) {
                  alert(JSON.stringify(data));
                    console.log(data);
                },
                error: function (data) {
                    var strBuilder = [];
                    for(key in data){
                          if (data.hasOwnProperty(key)) {
                             strBuilder.push(key + ":" + data[key] + "<br><br>");
                        }
                    }
                    alert(strBuilder.join(""));
                      $('#errordiv').html(strBuilder);
                }
            });
        }

感谢大家的帮助。

【问题讨论】:

  • 我在这里没有看到任何实际问题。
  • 你是正确的@CBroe 感谢您的捕获。道歉。
  • 您可以使用 $.ajax 方法。按照在成功块中包含您的成功回调方法。
  • jQuery.ajax 参数 username 和 password 负责身份验证部分。

标签: javascript jquery ajax curl converter


【解决方案1】:

我在 cmets 中说过,但是您可以使用 $.ajax 函数并在 beforeSend 块中设置您的标头。

    $.ajax({
      url: 'https://internalserverurl',
      type: 'GET',
      dataType: 'json',
      success: function() { alert('hello!'); },
      error: function() { alert('boo!'); },
      beforeSend: setHeader
    });
  });

  function setHeader(xhr) {
    xhr.setRequestHeader('Authorization':'Basic base64username:base64password');

  }

【讨论】:

  • 非常感谢@franzke !!!这行得通!现在我只需要让它在 IE 之外工作,我会很高兴(证书是自签名的,所以现代浏览器显然会关闭它)。
猜你喜欢
  • 2018-02-16
  • 2013-12-07
  • 2019-01-25
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 2012-10-26
  • 2016-01-08
  • 1970-01-01
相关资源
最近更新 更多