Contents

web

Contents

跨域

最近遇到跨域的问题,有个伙伴使用JSONP解决跨域的问题,简单记录下(其他方式不在讨论)

JSONP (JSON with Padding)是JSON 的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。 优势在于支持老式浏览器。

JSONP是利用浏览器对script的资源引用没有同源限制,通过动态插入一个script标签,当资源加载到页面后会立即执行的原理实现跨域的。JSONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback或者开始就定义一个回调方法,参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

ajax请求的时候,要设置dataType: “jsonp”

JSONP只支持GET请求而不支持POST等其它类型的HTTP请求

弊端也比较明显:需要客户端和服务端定制进行开发,服务端返回的数据不能是标准的Json数据,而是callback包裹的数据。