jsonp原理

远程jsonp服务提供的东西和普通的ajax+json一样,也是一串json.

普通ajax调用受限于浏览器的同域限制,只适用于客户端和服务端属于同一个域名的情况。

jsonp就是用来突破这个限制的。它本质并不是ajax调用,而是一个“远程script源码的引用”

<script src="http://remote-site/hello.jsonp">  <!--这种引用不受同源策略限制-->
</script>

http://remote-site/hello.jsonp返回的格式类似于:

引用

   onJsonpLoad("{resut:success,value:123}");

也就是说,返回的是一条符合JS语法的javascript语句

  1. 所以,<script src="xxx"/>这种方式才能成功运行。

  2. 远程返回语句后,客户端还会立即执行这条语句;这就意味着onJsonpLoad()方法是客户端中的一个回调方法。为了给予客户端足够的灵活性,服务端一般不会将回调方法名写死,而是让客户端在URL里指定,再原样返回。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.