簡體   English   中英

相當於curl命令的Javascript

[英]Javascript equivalent for curl command

我使用下面的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 ,充當呼叫和遠程服務器之間的中介。 然后,您可以格式化代理上的標頭或響應,以使其能夠響應跨域調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM