跨二級(jí)域名
我們知道cookie是可以跨二級(jí)域名來(lái)訪問(wèn),這個(gè)很好理解,例如你 www.test1.com 在的web應(yīng)用程序創(chuàng)建了一個(gè)cookie,要想在bbs.test1.com這樣的二級(jí)域名對(duì)應(yīng)的應(yīng)用程序中訪問(wèn),就必須你在創(chuàng)建cookie的時(shí)候設(shè)置domain參數(shù)domain=test1.com。 以asp.net為例 代碼如下:
代碼如下:
HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "test1.com";
cookie.Path = "/";
Response.Cookies.Add(cookie);
跨頂級(jí)域名
如果我不是二級(jí)域名而是完全在不同頂級(jí)域名中,例如 www.test1.com 所在的web應(yīng)用程序創(chuàng)建了一個(gè)cookie,想要在 www.test2.com 或其二級(jí)域名的應(yīng)用程序中訪問(wèn),改怎么辦呢?我們知道靠常規(guī)反的方法是訪問(wèn)不了的,關(guān)鍵我們就是看看有沒(méi)有方法可以訪問(wèn)。事實(shí)是Cookie可以在一定條件下跨域,而不是隨心所欲的實(shí)現(xiàn)跨域。
我們來(lái)做個(gè)測(cè)試,看看兩個(gè)站點(diǎn) www.test1.com 和 www.test2.com 如何實(shí)現(xiàn)cookie跨域訪問(wèn)。 按照常規(guī)我們需要有2個(gè)頂級(jí)域名,并且有DNS服務(wù)器才能夠配置域名,否則我們是無(wú)法驗(yàn)證的,但是這里我們也沒(méi)有必要那么麻煩,我們可以通過(guò)修改hosts文件來(lái)模擬。在 c:/windows/system32/drivers/etc 中有 hosts文件,在末尾添加上
127.0.0.1 www.test1.com
127.0.0.1 www.test2.com
兩行,就可以將本機(jī)用上面的域名訪問(wèn)本機(jī)回環(huán)地址了。我們只需要在IIS上部署一套程序,ip為本機(jī)回環(huán)地址,用兩個(gè)域名分別訪問(wèn)就可以了。
我們新建三個(gè)頁(yè)面,分別是 Default.aspx、SSO.ashx、GetCookie.aspx。
其中Default.aspx是 www.test1.com 的頁(yè)面,訪問(wèn)的地址是 http://www.test1.com/Default.aspx。看一下前臺(tái)代碼,它沒(méi)有任何后臺(tái)代碼
代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Admin10000.Web.Default" %>
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
var _frm = document.createElement("iframe");
_frm.style.display = "none";
_frm.src = "http://www.test2.com/SSO.ashx";
document.body.appendChild(_frm);
</script>
新聞熱點(diǎn)
疑難解答
圖片精選