learning-note
learning-note copied to clipboard
cookie cross domain
虽然localStorage
是很好用,但是它并不支持跨域访问,有些时候我们需要跨域访问,就只能用
cookie
了
下面介绍两个cookie
跨域情况
-
二级域名之间的跨域问题
如果我想在同一个主域名下实现通信,比如
www.baidu.com
和zhidao.baidu.com
, 它们之间如何通信呢?。在设置
cookie
的时候可以填写在哪个域名下生效的。var LastReportGenerated="Jul 11 2013", baseDomain = '.baidu.com', expireAfter = new Date(); // 设置过期时间 expireAfter.setDate(expireAfter.getDate() + 7); // 添加cookie document.cookie="Report={'ReportName':'MainReport', 'lastGenerated':" + LastReportGenerated + "}; domain=" + baseDomain + "; expires=" + expireAfter + "; path=/";
重点:
domain=".baidu.com"
,path="/"
这样设置的
cookie
就可以在所以.baidu.com
的域名下访问了。 -
完全没有关系的两个域名之间的跨域问题
比如
www.baidu.com
和www.jd.com
之间如果想通信怎么办呢 这个时候就需要后端的配合了。首先当你登录
www.baidu.com
的时候会设置一个cookie
, 然后发一个请求到www.jd.com
这个时候京东的服务端就知道你登录了百度账号,然后就可以在服务端设置一个cookie
了<!DOCTYPE html> <html> <head> <script> // 在这设置自己的cookie // // </script> </head> <body> <!-- 在这设置其他的cookie --> <img src="http://jd.com/cookies.php" style="display:none;" /> </body> </html>
主要利用了
img
标签向京东的服务器发送请求京东收到请求后处理一下就可以了
<?php setcookie("百度", "登录了", time()+3600); ?>
通过这种方式,当你登录百度的时候有可能你的京东账号也登录了。