[英]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.