我正在尝试从我的Jquery移动应用程序(托管在Amazon S3上)发出一个http POST请求到“http://paraimpu.crs4.it/data/new”,以便将数据插入Paraimpu网站上的传感器。这是我正在提出的要求:
data = "Test";
valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
$.ajax({
url: "http://paraimpu.crs4.it/data/new",
type: "POST",
data: valueToSend,
dataType: "json",
crossDomain: true,
contentType:"application/json",
success: function(){
alert('Success');
}
});
我一直在
XMLHttpRequest无法加载http://paraimpu.crs4.it/data/new。起源 不允许使用“http://webappz.s3-website-us-east-1.amazonaws.com” 访问控制允许来源。
我知道这是因为跨域政策,但我该如何解决这个问题呢? paraimpu页面上的说明非常含糊,只是说:
将执行HTTP POST的新传感器数据推送到:
http://paraimpu.crs4.it/data/new
内容如:{“token”:“c9d1cee6-da40-4e97-afc8-209045786b04”, “content-type”:“text / plain”,“data”:RAW DATA}
答案 0 :(得分:0)
data = "Test";
valueToSend = '{"token":"c9d1cee6-da40-4e97-afc8-209045786b04","content-type":"application/json","data":' + data + '}';
$.ajax({
url: "http://paraimpu.crs4.it/data/new",
type: "POST",
data: valueToSend,
dataType: "jsonp", //set datatype to jsonp
crossDomain: true,
jsonp: false,
contentType:"application/json",
success: function(){
alert('Success');
}
});
这些是您缺少的部分:
dataType: "jsonp"
:您期望从服务器返回的数据类型。 “jsonp”,使用JSONP加载JSON块。添加额外的“?callback =?”到URL的末尾以指定回调。通过将查询字符串参数“_ = [TIMESTAMP]”附加到URL来禁用缓存,除非缓存选项设置为true。
jsonp: false
:覆盖jsonp请求中的回调函数名称。在'callback =?'中将使用此值代替'callback' url中查询字符串的一部分。所以{jsonp:'onJSONPLoad'}会导致'onJSONPLoad =?'传递给服务器。从jQuery 1.5开始,将jsonp选项设置为false可防止jQuery将“?callback”字符串添加到URL或尝试使用“=?”转型。在这种情况下,您还应该显式设置jsonpCallback设置。例如,{jsonp:false,jsonpCallback:“callbackName”}
有关此内容的更多信息:jQuery.ajax()