【问题标题】:Convert curl to ajax request将 curl 转换为 ajax 请求
【发布时间】:2015-10-06 22:53:10
【问题描述】:

简单的问题:有什么办法可以将此 curl 转换为 ajax 请求?

curl -v https://api.mydomain.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF" \
  -d "grant_type=client_credentials"

虽然我很确定如何处理 -H,但我不知道如何指定 -u-d

【问题讨论】:

    标签: javascript ajax curl


    【解决方案1】:

    如果你使用XMLHTTPRequest,你可以使用setRequestHeader来设置请求头(-H)

    -u 可以通过简单地将凭据添加到 url 来完成: https://1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF@api.mydomain.com/v1/oauth2/token

    -d 是 POST 正文,应该是 .send(body) 中的第一个参数

    【讨论】:

    • 我有同样的问题,唯一的区别是一个“-X”,我该怎么做?
    • 您需要 GET 以外的其他内容吗?它是 .open 函数中的第一个参数...
    【解决方案2】:

    这应该是一个使用 jQuery Ajax 方法的有效示例:

    $.ajax({
        type: "POST",
        url: "https://api.mydomain.com/v1/oauth2/token",
        dataType: 'json',
        data: {"grant_type": "client_credentials"},
        beforeSend: function (xhr) {
            xhr.setRequestHeader('Authorization', 'Basic ' + [anylib].base64encode('1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF'));
            xhr.setRequestHeader('Accept-Language', 'en_US');
        }
    });
    

    Edit - Native:(注意不同的浏览器实现)

    xhr=new XMLHttpRequest();
    xhr.onreadystatechange=function(){
      if(xhr.readyState==4 && xhr.status==200){
            consolelog(xhr.responseText);
      }
    }
    xhr.setRequestHeader('Authorization', 'Basic ' + [anylib].base64encode('1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF'));
    xhr.setRequestHeader('Accept-Language', 'en_US');
    xhr.setRequestHeader("Content-type","application/json");
    xhr.open("POST","https://api.mydomain.com/v1/oauth2/token",true);
    xhr.send("grant_type=client_credentials");
    

    Edit2:一位同事告诉您,您需要在此处对您的身份验证进行 base64 加密。

    【讨论】:

    • 我一直在寻找一个普通的 JS 解决方案,但还是谢谢 :-)
    • 来吧,添加了一个原生的js版本;)
    • setRequestHeader 函数只能在 xhr.open 之后调用。
    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 2018-02-16
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2017-08-03
    • 2018-04-16
    相关资源
    最近更新 更多