跨域技术JSONP
来源:互联网 发布:nginx整合php 编辑:程序博客网 时间:2024/06/05 19:50
JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,在后来的Web服务中非常流行。JSONP看起来与JSON差不多,只不过是被包含在函数中调用的JSON
如下:
callback({"name":"Nicholas"});
JSONP组成
JSONP由两部分组成:回调函数和数据
回调函数
当响应到来时在页面中调用的函数,回调函数的名字一般是在请求中指定的
数据
数据就是传入回调函数中的JSON数据
典型的JSONP请求如下所示:
http://freegeoip.net/json/?callback=handleResponse
这个URL是在请求一个JSONP地理定位服务。通过查询字符串来指定JSONP服务的回调参数是很常见的,像上面的URL所示,指定的回调函数的名字叫做handleResponse()
实现原理
JSONP是通过动态<script>
元素来使用的,首先为src属性指定一个跨域URL。这里的<script>
元素和<img>
,都有能力不受限制地从其他域加载资源。
总结:但凡具有src或者href类似可以引用外部资源的属性的标签都可以实现跨域
因为JSONP是有效的javascript的代码,所以请求完成后,即再JSONP响应加载到页面中以后,就会立即执行。
function handleResponse(response){ alert("You are at IP address" +response.ip+",whitch is in"+response.city +","+response.region_name); } var script = document.createElement("script"); script.src = "http://freegeoip.net/json/?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild);
这个例子通过查询地理定位服务来显示你的IP地址和位置信息
JSONP优点
能够直接访问响应文本,支持在浏览器与服务器之间的双向通信
JSONP的不足
1、JSONP从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码
2、要确定JSONP请求是否失败并不容易。虽然HTML5给script元素新增了一个onerror事件处理程序,但目前还没有浏览器支持,因此开发人员不得不使用计时器检测指定时间内是否接收到了响应。
JSONP应用
使用JSONP跨域的步骤:
1、创建一个script标签
2、指定src和type
3、将标签追加到文本内容中
注意:在指定src的时候需要追加callback回调函数,用&连接起来
其他跨域技术
- 服务器代理
- document.domain
- window.name
- CSST
- CORS
- flash
- window.postMessage
- location.hash
- HTML5的WebSocket
- 跨域技术JSONP
- JSONP跨域技术
- JSONP跨域技术
- 前端跨域技术----jsonp
- 一种跨域技术:JSONP
- 前端跨域技术之JSONP
- JSONP--实现跨域的ajax技术
- 跨域技术(JSONP与CROS)
- 项目技术总结一之JSONP实现跨域调度
- Ajax跨域请求——jsonp技术
- 技术点-Jsonp跨域请求-概念性总结
- 技术点-Jsonp跨域请求-技术性总结
- jsonp 跨域原理:深入浅出 jsonp
- jsonp 跨域访问
- JSONP跨域访问
- jsonp跨域访问
- jsonp跨域请求
- jsonp跨域劣势
- android中gravity和layout_gravity的区别
- 指针与引用
- SQL Server 2008 parseJSON函数将JSON解析成Table
- ActionBar
- js的闭包解决百度地图的信息窗口问题
- 跨域技术JSONP
- 狗狗们来袭!分享一个独立小游戏,狗狗后院!
- 指针
- 使用 ViewStub 延迟加载布局
- leetcode 120 Triangle
- mysql安装
- SQL Server 2008 clearhtml函数清除字段中的HTML标记
- Linux学习——基本命令(1)
- Irrlicht 移植到 Android