jsonp跨域
发布时间:2020-12-16 19:33:50 所属栏目:百科 来源:网络整理
导读:js跨域 利用了script src没有同源限制,进行跨域请求。 例如,www.a.com 想请求 www.b.com 的内容 //a网站的请求页:script function jsonp(json){ //对返回的json数据的处理}/scriptscript src="http;//www.b.com/jsonp.js"/script//b网站的jsonp.js 响应页
js跨域利用了script src没有同源限制,进行跨域请求。 //a网站的请求页: <script> function jsonp(json){ //对返回的json数据的处理 } </script> <script src="http;//www.b.com/jsonp.js"></script> //b网站的jsonp.js 响应页 jsonp({'name':'amy',age:22}) 要点
补充说明以上便是js的jsonp实现跨域,其实它和 jquery 跨域不使用jsonp的ajax请求$.ajax({ type: "GET",url: "http://www.b.com/jsonp.js" dataType: "json",success: function(data) { //对data的处理 },error: function(jqXHR){ alert("发生错误:" + jqXHR.status); },}); 如果不使用jsonp会有跨域报错。 使用了jsonp 的请求:$.ajax({ type: "GET",url: "http://www.b.com/jsonp.js" dataType: "jsonp",jsonp:"callback",//“callback”:任意名字都可以 success: function(data) { //对data的处理 },}); 服务端的修改
$jsonp = $_GET["callback"];//callback名字和请求的名字相同 2.返回参数之前加上$jsonp,并用()将参数括住,以php后端为例: //原来:$result ='{"success":true,"msg":"找到员工:员工编号:' . $value["number"] .'"}'; //改为: $result =$jsonp . '({"success":true,"msg":"找到员工:员工编号:' . $value["number"] .'"})'; ajax的处理把在get请求后追加了 局限jsonp仅支持get请求 另辟蹊径XHR2(XMLHttpRequest Level 2) header('Access-Control-Allow-Origin:*');//允许跨域请求的域名,允许全部设为* header('Access-Control-Allow-Methods:POST,GET'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |