众所周知GET请求可以用jsonp的方式解决跨域问题,下面会给出一个jsonp请求的示例。
1.后台接口
@Path("getscene")
@MClientHandler
public ContentResult getSceneTable() {
HttpServletRequest request = beat.getRequest();
HttpServletResponse response = beat.getResponse();
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "Get,Post,OPTIONS");
response.addHeader("Access-Control-Request-Headers", "X-Custom-Header");
List <GulRecallSceneEntity> sceneList = GulRecallService.getSceneEntity();
String sceneData = CommonService.tranObjectToString(sceneList);
logger.info("sceneData=" + sceneData);
String jsonp = request.getParameter("callback"); //后端接口支持jsonp
return new ContentResult(jsonp + "(" + sceneData + ")" ); //后端接口支持jsonp
//return new ContentResult(sceneData);
}
2. 前端axaj请求
$.ajax({
type : "GET",
url : "http://xxx/getscene",
contentType: "application/json;charset=utf-8",
dataType:"jsonp", //请求支持jsonp
data:'',
jsonp:'callback', //请求支持jsonp
success : function (msg) {
//TODO
},
error:function(){
alert("错误");
}
});