一、利用jsonp解决
AJAX代码
//跨域请求需要改变dataType类型
$.ajax({
async: false,
url: "http://115.29.111.132:9080/supervision/login.do?method=frontLogin&userName=cxj&password=123456&sysFlag=jcy",
type: 'GET',
dataType: 'jsonp',
//传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonp:"jsoncallback",
//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
jsonpCallback:"jsonpCallback_success",
//成功获取跨域服务器上的json数据后,会动态执行这个callback函数
success: function(jsonObj){
winfullopen("http://115.29.111.132:9080/supervision/statistic.do?method=home");
},
error: function(){
alert('提交请求出错。');
}
});
JAVA代码
//-----------跨域问题后台代码开始-----------
String callbackName = "";;
String result = "{success:\"+ flag +\", msg: '\" + msg + \"'}";
if( request.getMethod().compareToIgnoreCase("post")>=0){
System.out.println("post");
}else{
//根据html指定的jsonp回调函数的参数名,获取回调函数的名称
callbackName=(String)request.getParameter("jsoncallback");
}
//最终返回的数据为
String renderStr=callbackName+"("+result+")";
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write(renderStr);
//-----------跨域问题后台代码结束-----------
二、更改服务器头信息
* 只需要在服务器端头部加上下面两句代码,此方法只在springmvc中试成功过,SSH试了多次都没成功:
header( "Access-Control-Allow-Origin:*" );
header( "Access-Control-Allow-Methods:POST,GET" );