德兴市建设局网站,软件公司名字,最近在线观看免费完整版高清电影,合肥前端开发培训机构写在前面 跨域的解决方案有多种#xff0c;其中最常见的是使用同一服务器下的代理来获取远端数据#xff0c;再通过ajax进行读取#xff0c;而在这期间经过了两次请求过程#xff0c;使得获取数据的效率大大降低#xff0c;这篇文章蓝飞就为大家介绍一下解决跨域问题的一种… 写在前面 跨域的解决方案有多种其中最常见的是使用同一服务器下的代理来获取远端数据再通过ajax进行读取而在这期间经过了两次请求过程使得获取数据的效率大大降低这篇文章蓝飞就为大家介绍一下解决跨域问题的一种比较通用的方案——JSONP。 什么是跨域 简单的来说出于安全方面的考虑页面中的JavaScript无法访问其他服务器上的数据即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制实现不同服务器之间通信的效果。 具体策略限制情况可看下表 URL说明允许通信http://www.a.com/a.jshttp://www.a.com/b.js同一域名下允许http://www.a.com/lab/a.jshttp://www.a.com/script/b.js同一域名下不同文件夹允许http://www.a.com:8000/a.jshttp://www.a.com/b.js同一域名不同端口不允许http://www.a.com/a.jshttps://www.a.com/b.js同一域名不同协议不允许http://www.a.com/a.jshttp://127.0.0.100/b.js域名和域名对应ip不允许http://www.a.com/a.jshttp://script.a.com/b.js主域相同子域不同不允许http://www.a.com/a.jshttp://a.com/b.js同一域名不同二级域名同上不允许http://www.a.com/a.jshttp://www.b.com/b.js不同域名不允许 什么是JSONP JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式而JSONPJSON with Padding则是JSON 的一种“使用模式”通过这种模式可以实现数据的跨域获取。 JSONP跨域的原理 在同源策略下在某个服务器下的页面是无法获取到该服务器以外的数据的但img、iframe、script等标签是个例外这些标签可以通过src属性请求到其他服务器上的数据。利用script标签的开放策略我们可以实现跨域请求数据当然也需要服务端的配合。当我们正常地请求一个JSON数据的时候服务端返回的是一串JSON类型的数据而我们使用JSONP模式来请求数据的时候服务端返回的是一段可执行的JavaScript代码。 举个例子假如需要从服务器http://www.a.com/user?id123获取的数据如下 {id: 123, name : 张三, age: 17}那么使用JSONP方式请求http://www.a.com/user?id123?callbackfoo的数据将会是如下 foo({id: 123, name : 张三, age: 17});当然如果服务端考虑得更加充分返回的数据可能如下 try{foo({id: 123, name : 张三, age: 17});}catch(e){}这时候我们只要定义一个foo()函数并动态地创建一个script标签使其的src属性为http://www.a.com/user?id123?callbackfoo 便可以使用foo函数来调用返回的数据了。 在jQuery中如何通过JSONP来跨域获取数据 第一种方法是在ajax函数中设置dataType为jsonp $.ajax({ dataType: jsonp, url: http://www.a.com/user?id123, success: function(data){ //处理data数据 }});第二种方法是利用getJSON来实现只要在地址中加上callback?参数即可 $.getJSON(http://www.a.com/user?id123callback?, function(data){ //处理data数据});也可以简单地使用getScript方法 //此时也可以在函数外定义foo方法function foo(data){ //处理data数据}$.getJSON(http://www.a.com/user?id123callbackfoo); JSONP的应用 JSONP在开放API中可以起到非常重要的作用开放API是运用在开发者自己的应用上而许多应用往往是在开发者的服务器上而不是在新浪微博的服务器上因此跨域请求数据成为开发者们所需要解决的一大问题广大开放平台应该实现对JSONP的支持这一点新浪微博开放平台便做的非常好虽然某些API里没有说明但实际上是可以使用JSONP方式调用的。 签 名 档原文地址我的博客http://www.clanfei.com/2012/08/1637.html欢迎访问交流至于我为什么要多弄一个博客因为我热爱前端热爱网页我更希望有一个更加自由、真正属于我自己的小站或许并不是那么有名气但至少能够让我为了它而加倍努力。。签 名 档 转自:http://blog.csdn.net/coolanfei/article/details/7849735 转载于:https://www.cnblogs.com/zhengteng/p/5297203.html