一、什么是跨域?
当前发送请求的页面与请求的后台不在同一个服务器上,协议、域名、端口三者有一个不同都会形成跨域。跨域是由于浏览器的同源策略造成的,是浏览器的安全限制。
二、jsonp解决跨域
由于js可以跨域加载js文件,所以利用这一特性绕过跨域请求。
方法一:使用ajax的jsonp进行处理
页面请求代码:
这种方法只能是GET请求方式,dataType为jsonp
服务器处理请求代码:
参数中的callback会获取请求传到后台的回调函数,返回callback+ "(" + JsonUtils.objectToJson(result) + ");"后,会将对应的数据返回给页面请求对应的success方法接收。
服务器端还可以使用另一种方式处理,如下图:
该方式需要spring4.1以上的版本。
方法二:使用jquery的jsonp插件进行处理
插件下载网址:https://github.com/jaubourg/jquery-jsonp
页面请求代码:
后台处理方式同上面第一种方法相同,方法二的优点在于不仅仅局限于GET方式提交,同时也可以是POST提交。
方法三:可以利用nginx反向代理实现,这样浏览器访问时就不存在跨域的问题了。