跨域的安全限制都是相对于浏览器端来说的.服务器端是不存在跨域安全限制的,服务器端通过类似httpclient方式完成“跨域访问”的工作,然后在浏览器端用AJAX获取本机服务器端“跨域访问”对应的url来间接完成跨域访问也是可以的.但很显然开发量比较大,但限制也最少,很多widget开放平台server端(如sohu博客开放平台)其实就么搞的.
浏览器端的真正跨域访问,推荐的是目前jQuery $.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的.
$.ajax({
async:false,
url:"http://otherdomain/api/send_sms.php",
type: "GET",
dataType: 'jsonp',
//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonp: "jsoncallback",
/*jsonpCallback:"success_jsoncallback",*/
data:{
"passport":"18218372732"
},
timeout: 5000,
beforeSend: function(){
//jsonp方式此方法不被触发.
},
success: function(data){
//客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,
会动态执行这个callback函数
if(json.actionErrors.length!=0){
alert(json.actionErrors);
}
//code here
alert(data.code);//"ok"
},
complete: function(XMLHttpRequest, textStatus){
//code here
},
error: function(xhr){
//请求出错处理
alert("请求出错(请检查相关度网络状况.)");
}
});
服务端-Java:
String json = "{'code':'ok'}";//返回给客户端的JSON字符串
String resp = request.getParameter("jsoncallback") + "(" &#
浏览器端的真正跨域访问,推荐的是目前jQuery $.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的.
方式一:
客户端-jquery-ajax:$.ajax({
async:false,
url:"http://otherdomain/api/send_sms.php",
type: "GET",
dataType: 'jsonp',
//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonp: "jsoncallback",
/*jsonpCallback:"success_jsoncallback",*/
data:{
"passport":"18218372732"
},
timeout: 5000,
beforeSend: function(){
//jsonp方式此方法不被触发.
},
success: function(data){
//客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,
会动态执行这个callback函数
if(json.actionErrors.length!=0){
alert(json.actionErrors);
}
//code here
alert(data.code);//"ok"
},
complete: function(XMLHttpRequest, textStatus){
//code here
},
error: function(xhr){
//请求出错处理
alert("请求出错(请检查相关度网络状况.)");
}
});
服务端-Java:
String json = "{'code':'ok'}";//返回给客户端的JSON字符串
String resp = request.getParameter("jsoncallback") + "(" &#