一、什么是跨域
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,所谓同源是指域名、协议、端口均相同。
二、前端示例
使用jquery ajax请求后台
$.ajax({
type:"GET",
url:"http://localhost:8080/andApps/award.do", //访问的链接
dataType:"jsonp", //数据格式设置为jsonp
jsonp:"callback", //回调函数名的参数名,默认callback,服务端通过它来获取到回调函数名
jsonpCallback:"callback",//回调函数名,默认jquery自动生成
success:function(data){ //成功的回调函数
alert(data);
},
error: function (e) {
alert("error");
}
});
三、后端示例
根据与前端Ajax约定的jsonp参数名来接收验证参数,示例如下(使用SpringMVC)
@RequestMapping(value="/award",produces="text/html;charset=UTF-8")//produces设置解决乱码
@ResponseBody
public String award(HttpServletRequest request) {
String callback = request.getParameter("callback");
JSONObject json= new JSONObject();
json.put("code", 10066);
json.put("success",false);
//根据jsonp参数名获取到参数后要与本来要返回的json数据按“callback(json)”的方式构造
return callback+"("+json.toString()+")";
}