jsonp解决js跨域的问题

一、什么是跨域?

    当前发送请求的页面与请求的后台不在同一个服务器上,协议、域名、端口三者有一个不同都会形成跨域。跨域是由于浏览器的同源策略造成的,是浏览器的安全限制。

二、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反向代理实现,这样浏览器访问时就不存在跨域的问题了。

猜你喜欢

转载自blog.csdn.net/xiaoying0531/article/details/80772982