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
,充当您的呼叫和远程服务器之间的中介。 然后,您可以在代理上格式化标题或响应,以使其能够响应跨域调用
上一篇: Javascript equivalent for curl command
下一篇: Is there a way to pass an array to currentWhen in EmberJS?