浏览器的同源策略,限制脚本程序只能和同协议,同域名,同端口的脚本进行交互,包括共享和传递变量,cookie的传递。尽管浏览器不允许页面脚本跨域读取数据,但是允许html引用跨域的资源,比如脚本程序,css,图片,等等,因为script,iframe的src是不存在跨域的。
$.get("http://www.hualai.net.cn/news/website.jsp",
{}, function(data){
alert(' error:'+data)
}, "html");
比如上面的请求,因为是跨域读取数据,所以,无法获取想要的数据jsonp是非官方协议,它是在服务端生成script tags返回到客户端,在客户端通过javscript callback形式实现跨域访问。
jsonp原理是客户端定义一个callback,然后把callback名字传送至服务端,服务端生成json数据,然后以javascript的方式,生成一个以callback名字的function的javascript函数执行形式,将json数据以入参方式放到function中,就 生成了一个js的函数执行语法的文档,传到客户端。客户端浏览器解析script,执行服务端返回的javascript片段,返 回的数据作为参数,传入到客户端定义的callback中动态执行。
实例
http://www.hualai.net.cn/news/website.jsp
<script type="text/javascript">
function sayHello(result){
alert(result());
}
</script>
<script type="text/javascript"src="http://www.hualai.net.cn/news/website2.jsp?callback=sayHello"></script>
http://www.hualai.net.cn/news/website2.jsp
<%
String script="function show(){ return 'hello';}";
//String script="{name:'yuyong'}";
String callback=request.getParameter("callback");
out.println(callback+"("+script+")");
%>
通过jsonp,完美的实现了跨域。
分享到:
相关推荐
vue-resource是一个轻量级的HTTP客户端,它支持XMLHttpRequest (XHR) 和 JSONP 请求。首先,你需要通过npm或yarn安装这个库: ```bash npm install vue-resource # 或 yarn add vue-resource ``` 安装完成后,在你...
bboss MVC是一个基于Java的轻量级MVC框架,它提供了丰富的API和配置选项,使得开发者可以方便地构建Web应用。 首先,理解JSONP的基本原理是至关重要的。JSONP的工作机制是,前端通过`<script>`标签的`src`属性向...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言(包括C、C++、C#、Java、JavaScript、Perl、Python等)的习惯,这使得JSON成为理想的...
在ASP.NET中,ASHX文件是一种轻量级的HTTP处理器,用于处理自定义的HTTP请求。在JSONP的场景下,ASHX处理程序接收请求,解析请求中的`callback`参数,然后将数据以JSON格式返回,并将其包裹在`callback`指定的函数名...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是独立于语言的,但与JavaScript语法非常相似。例如: ```javascript var person = { "name": "test", "age": "25", "sex": "男" }; var ...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。而JSONP是在JSON的基础上增加了一个回调函数名,使得JSON数据能够被JavaScript调用执行。其基本...
JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,因此常作为AJAX传输的数据格式。 跨域访问是由于浏览器的同源策略限制,即一个域下的文档或...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSONP是一种处理跨域数据的方式,通过动态创建`<script>`标签,将JSON数据包裹在一个函数调用中,...
`jquery-jsonp-master.zip`是一个包含jQuery JSONP实现的压缩包,适用于学习和应用轻量级的JSONP解决方案。 首先,我们需要了解JSONP的基本原理。由于同源策略的限制,JavaScript通常不能直接向其他域名发送Ajax...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在跨域访问中,JSON通常作为数据传输的载体,因为它可以被JavaScript轻松处理。 jQuery是一个流行的...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,设计用于人类可读且易于机器解析和生成。它基于JavaScript的一个子集,尤其适合于Web应用程序之间的数据交换。JSON采用完全独立于语言的文本格式,...
在AJAX中,JSON常被用作数据交换格式,因为它是轻量级的,且JavaScript原生支持解析和生成JSON对象。JSON的语法结构类似于JavaScript的对象和数组,使得它非常易于理解和使用。 在上述示例中,使用jQuery库实现了...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是JavaScript对象字面量表示法的一个子集。由于其结构与JavaScript语法紧密相关,因此JSON数据可以在JavaScript中直接解析和生成,无需额外的编...
1.json与jsonp的引入 在ajax中 JSON用来解决数据交换问题,而JSONP来实现跨域。 备注:跨域也可以通过服务器端代理来解决;... 3) 轻量级数据格式,占用字符数量极少,特别适合互联网传递; 4) 可读性较强,虽然比不上
JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 在描述中提到,前端是一个搜索框,它通过AJAX向后端WCP(Web Content Platform)开源项目发送...
artDialog是一个轻量级的JavaScript对话框插件,它提供了丰富的定制选项,如尺寸、样式、按钮等,使得在网页上创建美观且功能完备的对话框变得简单。在虾米音乐的案例中,artDialog用于显示歌曲详情,同时提供播放...
JSONP因其简单和轻量级的特性,在只支持GET请求的跨域场景中广泛应用。然而,对于需要POST请求或其他高级功能的情况,通常会依赖于CORS(Cross-Origin Resource Sharing)机制,它提供了更灵活的安全跨域策略。
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递; 4、可读性较强,虽然比不上 XML 那么一目了然,但在合理的依次缩进之后还是很容易识别的; 5、容易编写和解析,当然前提是你要知道数据结构; JSON 的...