https://blog.youkuaiyun.com/pangudashu/article/details/19078535
1、javascript标签不受跨域影响
2、插入另外域的js代码代码即是jsonp,此js代码返回另外域的json数据
3、此json数据可以包含另外域的cookie
4、调用另外域的js代码,传入callback函数参数,让另外域将数据包装至此callback函数
5、callback函数在本域执行
a网站读取b网站的cookie
------a 网站-------
jsonp.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
var localHandler = function(data){
alert('我是本地函数,可以被跨域的getcookie.php文件调用,远程js带来的数据是:' +JSON.stringify(data) );
};
</script>
<script type="text/javascript" src="http://localhost:8081/getcookie.php?callback=localHandler"></script>
</head>
<body>
</body>
</html>
-----b 网站 -------
getcookie.php
<?php
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:POST,GET");
$callback = $_GET['callback'];
$cookie = json_encode($_COOKIE);
echo $callback."(".$cookie.")";
?>
--------------------------------------------------------------------
返回结果
先用执行以下代码设置一下:
http://localhost:8081/setcookie.php
<?php
setcookie("user", "runoob", time()+3600);
?>
最后执行以下代码
file:///C:/dev/html-test/jsonp.html
返回结果:
我是本地函数,可以被跨域的getcookie.php文件调用,远程js带来的数据是:{"user":"runoob"}
备注:1、执行http://localhost:8081/setcookie.php和file:///C:/dev/html-test/jsonp.html必须同一浏览器