Javascript等价于curl命令

我正在使用下面的curl命令以json格式从远程服务器上托管的Druid集群中获取数据

curl -X POST "http://www.myserverIP.com:8080/druid/v2/" -H 'content-type: application/json' -d '{"queryType": "groupBy","dataSource": "twsample","granularity": "none","dimensions": ["created_at"],"aggregations": [{"type": "count", "name": "tweetcount"}],"intervals": ["2013-08-06T11:30:00.000Z/2020-08-07T11:40:00.000Z"]}'

但我不能创建一个等效的JavaScript方法,它会做同样的事情,我使用下面的代码来做到这一点。

function sendCurlRequest(){
    var json_data = {
                "queryType": "groupBy",
                "dataSource": "twsample",
                "granularity": "none",
                "dimensions": ["created_at"],
                "aggregations": [
                    {"type": "count", "name": "tweetcount"}
                ],
              "intervals": ["2013-08-06T11:30:00.000Z/2020-08-07T11:40:00.000Z"]
            };
    $.ajax({
         cache : false,       
     type: 'POST',
     crossDomain:true,
     url: 'http://www.myserverIP:8080/druid/v2/',
     data:json_data,
     //dataType: "jsonp",
     contentType:"application/jsonp",
     success: function(data){
            alert(data);
        var pubResults = data;       
     },
     error: function(data){
       alert("ERROR RESPONSE FROM DRUID SERVER : "+JSON.stringify(data));
     },
     complete: function(data){
        console.log("call completed");
     }
   });
}

任何帮助将不胜感激。


cURL能够向远程服务器发送和接收跨域数据,但出于安全原因,javascript并非如此

我相信你的选择是

1)使用CORS在远程服务器上设置标题以接受跨域调用(如果您有权访问服务器),同样也是由thriqon指出的

2)使用来自服务器的jsonP格式响应(同样,如果您可以控制响应的生成方式或者它已经处于jsonP格式)

3)编写一个server-side proxy ,充当您的呼叫和远程服务器之间的中介。 然后,您可以在代理上格式化标题或响应,以使其能够响应跨域调用

链接地址: http://www.djcxy.com/p/73983.html

上一篇: Javascript equivalent for curl command

下一篇: Is there a way to pass an array to currentWhen in EmberJS?