日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于Cookie跨域的問題

 昵稱10504424 2015-03-20
Cookie是一個(gè)偉大的發(fā)明,它允許Web開發(fā)者保留他們的用戶的登錄狀態(tài)。但是當(dāng)你的站點(diǎn)有一個(gè)以上的域名時(shí)就會出現(xiàn)問題了。在Cookie規(guī)范上說,一個(gè)cookie只能用于一個(gè)域名,不能夠發(fā)給其它的域名。因此,如果在瀏覽器中對一個(gè)域名設(shè)置了一個(gè)cookie,這個(gè)cookie對于其它的域名將無效。如果你想讓你的用戶從你的站點(diǎn)中的其中一個(gè)進(jìn)行登錄,同時(shí)也可以在其它域名上進(jìn)行登錄,這可真是一個(gè)大難題。

跨二級域名

  我們知道cookie是可以跨二級域名來訪問,這個(gè)很好理解,例如你 www. 在的web應(yīng)用程序創(chuàng)建了一個(gè)cookie,要想在bbs.這樣的二級域名對應(yīng)的應(yīng)用程序中訪問,就必須你在創(chuàng)建cookie的時(shí)候設(shè)置domain參數(shù)domain=。 以asp.net為例 代碼如下:

1
2
3
4
HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "";
cookie.Path = "/";
Response.Cookies.Add(cookie);

跨頂級域名

  如果我不是二級域名而是完全在不同頂級域名中,例如 www. 所在的web應(yīng)用程序創(chuàng)建了一個(gè)cookie,想要在 www. 或其二級域名的應(yīng)用程序中訪問,改怎么辦呢?我們知道靠常規(guī)反的方法是訪問不了的,關(guān)鍵我們就是看看有沒有方法可以訪問。事實(shí)是Cookie可以在一定條件下跨域,而不是隨心所欲的實(shí)現(xiàn)跨域。

  我們來做個(gè)測試,看看兩個(gè)站點(diǎn) www. 和 www. 如何實(shí)現(xiàn)cookie跨域訪問。 按照常規(guī)我們需要有2個(gè)頂級域名,并且有DNS服務(wù)器才能夠配置域名,否則我們是無法驗(yàn)證的,但是這里我們也沒有必要那么麻煩,我們可以通過修改hosts文件來模擬。在 c:\windows\system32\drivers\etc 中有 hosts文件,在末尾添加上

127.0.0.1    www.
127.0.0.1    www. 

兩行,就可以將本機(jī)用上面的域名訪問本機(jī)回環(huán)地址了。我們只需要在IIS上部署一套程序,ip為本機(jī)回環(huán)地址,用兩個(gè)域名分別訪問就可以了。

  我們新建三個(gè)頁面,分別是 Default.aspx、SSO.ashx、GetCookie.aspx。

  其中Default.aspx是 www. 的頁面,訪問的地址是 http://www./Default.aspx。看一下前臺代碼,它沒有任何后臺代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ 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./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www./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./SSO.ashx";
document.body.appendChild(_frm);
</script>
</div>
</form>
</body>
</html>

  另外一個(gè)是 SSO.ashx 頁面,我們認(rèn)為它是 www. 的頁面,前臺沒有任何代碼,后臺代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;
namespace Admin10000.Web
{
/// <summary>
/// $codebehindclassname$ 的摘要說明
/// </summary>
[WebService(Namespace = "http:///")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SSO : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "";
cookie.Path = "/";
cookie.Expires = DateTime.Now.AddMinutes(10000);
context.Response.Cookies.Add(cookie);

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多