跨域大部分需要通过后台解决,引起跨域的原因:
3个问题同时满足 才可能产生跨域问题,即跨域(协议,主机名,端口号中有一个不同就产生跨域)
下面是解决方法
方法一
// ajax请求跨域 /* *解决ajax跨域----jsonp */ function httpReq() { $.ajax({ type:"get",//必须是get请求 url: "/testJsonp", data: "data", dataType:"jsonp",//请求的数据类型 jsonp:"callback",//请求类型是回调 jsonpCallback:"callbackFunction",//数据请求成功时回调的方法 success: function (response) { console.log(response); } }); } /** * java部分 */ @Controller public class TestController { @RequestMapping(value="/testJsonp") public void testAjaxJsonp(@RequestParam String callback,HttpServletResponse response){ try { // 这里jsonp返回的数据是固定格式 文后有详细解释 response.getWriter().print(callback+"({"id":1})"); response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); } } }
方法二:Java解决
-
/**设置响应头允许ajax跨域访问**/response.setHeader("Access-Control-Allow-Origin","*");