jsonp ajax 跨域访问怎么实现的

 我来答
百度网友e096309
2016-10-31 · TA获得超过1327个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:415万
展开全部

说说个人理解。首先需要知道几个知识:

  1. 跨域js是允许的。比如你在localhost跑一段html,里面引用了<script href="http://www.baidu.com/xxxx.js"></script>这是完全允许的。

  2. 动态加载js是允许的。可以通过js创建一个<script>,设置它的href="http://跨域域名/xxx.js",然后appendChild到<head>里去,浏览器会加载这段js并执行。

  3. js的href可以指向动态脚本,比如<script href="http://某域名/xxx.php?key1=value1&key2=value2">

  4. jsonp请求,服务器给的返回值实质上是js代码。jsonp是利用1 2和3的特点来实现的。


jsonp的具体过程为:

  1. 请求前,写好一个回调函数比如jsonpCallback = function(data) { ... }。

  2. 请求时,利用1 2 3的特性,加载一个js文件:url形如"http://跨域域名/jsonp.php?callback=jsonpCallback&其它参数"。

  3. 服务器读区callback函数的函数名,计算好要返回的值比如data={a:b, c:d},拼接一段js代码:jsonpCallback(data)。传给客户端的内容变成jsonpCallback({a:b, c:d})

  4. 前端拿到js代码,执行jsonpCallback({a:b, c:d}),jsonp的过程完成。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式