asp.NetCookieドメイン間(ドメイン名)に関する質問

6216 ワード

2級ドメイン名にまたがる私たちはcookieが2級ドメイン名にまたがってアクセスできることを知っています.これはよく理解しています.例えばwww.test 1.comのウェブアプリケーションはbbsでクッキーを作成しました.test1.comのような2級ドメイン名に対応するアプリケーションにアクセスするには、クッキーを作成するときにdomainパラメータdomain=test 1を設定する必要があります.com. asp.Netの例コードは以下の通りです.
 
  
HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com");
cookie.Domain = "test1.com";
cookie.Path = "/";
Response.Cookies.Add(cookie);

上位ドメイン名にまたがる
もし私が2級ドメイン名ではなく、www.test 1のような異なるトップドメイン名に完全に存在するならば.comが存在するwebアプリケーションはwww.test 2でクッキーを作成した.comまたはその2級ドメイン名のアプリケーションにアクセスして、どうすればいいですか?従来の逆の方法ではアクセスできないことを知っています.肝心なのは、アクセスできる方法があるかどうかを見ることです.事実上、Cookieは、任意のドメイン間ではなく、一定の条件下でドメイン間で実現することができる.
2つのサイトwww.test 1を見てみましょう.comとwww.test 2.comはどのようにcookieのドメイン間アクセスを実現しますか.通常、ドメイン名を構成するには2つのトップドメイン名が必要であり、DNSサーバが必要です.そうしないと検証できませんが、hostsファイルを変更してシミュレーションする必要はありません.c:windowssystem 32driversetcにhostsファイルがあり、末尾に追加
127.0.0.1    www.test1.com127.0.0.1    www.test2.comの2行で、本機を上のドメイン名で本機のループバックアドレスにアクセスすることができます.IISにプログラムを配備するだけで、ipはネイティブループアドレスで、2つのドメイン名でそれぞれアクセスすればいいです.
私たちは新しい3つのページを作りました.それぞれDefaultです.aspx、SSO.ashx、GetCookie.aspx.
その中でaspxはwww.test 1.comのページ、アクセス先はhttp://www.test1.com/Default.aspx.フロントコードを見てください.バックグラウンドコードはありません.
 
  





    <br/> <br/> <br/>    <form id="form1" runat="server"> <br/>    <div> <br/> <br/>        <script type="text/javascript"> <br>            var _frm = document.createElement("iframe"); <br>            _frm.style.display = "none"; <br>            _frm.src = "http://www.test2.com/SSO.ashx"; <br>            document.body.appendChild(_frm);    <br>        </script> <br/> <br/>    </div> <br/>    </form> <br/> <br/> </code></pre> <br/> SSO.ashx , www.test2.com , , : <pre><code> <br/>using System; <br/>using System.Collections.Generic; <br/>using System.Linq; <br/>using System.Web; <br/>using System.Web.Services; <br/>using System.Web.SessionState; <br/> <br/>namespace Admin10000.Web <br/>{ <br/>    /// <summary> <br/>    /// $codebehindclassname$ <br/>    /// </summary> <br/>    [WebService(Namespace = "http://tempuri.org/")] <br/>    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] <br/>    public class SSO : IHttpHandler <br/>    { <br/> <br/>        public void ProcessRequest(HttpContext context) <br/>        { <br/>            HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com"); <br/>            cookie.Domain = "test2.com"; <br/>            cookie.Path = "/"; <br/>            cookie.Expires = DateTime.Now.AddMinutes(10000); <br/>            context.Response.Cookies.Add(cookie); <br/> <br/>            context.Response.ContentType = "text/plain"; <br/>            context.Response.AddHeader("P3P", "CP=CAO PSA OUR"); <br/>            context.Response.Write(""); <br/>        } <br/> <br/>        public bool IsReusable <br/>        { <br/>            get <br/>            { <br/>                return false; <br/>            } <br/>        } <br/>    } <br/>} </code></pre> <br/> GetCookie.aspx , www.test2.com , , : <pre><code> <br/>using System; <br/>using System.Collections.Generic; <br/>using System.Linq; <br/>using System.Web; <br/>using System.Web.UI; <br/>using System.Web.UI.WebControls; <br/> <br/>namespace Admin10000.Web <br/>{ <br/>    public partial class GetCookie : System.Web.UI.Page <br/>    { <br/>        protected void Page_Load(object sender, EventArgs e) <br/>        { <br/>            if (Request.Cookies["name"] != null) <br/>            { <br/>                Response.Write(Request.Cookies["name"].Value); <br/>            } <br/>        } <br/>    } <br/>} </code></pre> <br/> , , http://www.test1.com/Default.aspx , iframe SSO.ashx , cookie, http://www.test2.com/GetCookie.aspx  cookie。 www.test1.com cookie www.test2.com 。 <p> :<br/>  admin10000.com SSO.ashx :context.Response.AddHeader("P3P", "CP=CAO PSA OUR"); P3P 。 IE P3P iframe cookie , cookie。(FireFox P3P ,FireFox 。 P3P 。)</p> <p>   iframe src test1.com cookie get test2.com SSO.ashx ,SSO.ashx test1.com cookie , cookie , cookie 。</p> <p>   Default.aspx JS :</p> <pre><code> <br/> <br/> <br/> <br/> <br/> <br/> <br/>    <title/> <br/> <br/> <br/>    <form id="form1" runat="server"> <br/>    <div> <br/>        <script type="text/javascript" src="http://www.test2.com/SSO.ashx"/> <br/>    </div> <br/>    </form> <br/> <br/> </code></pre> <div class="clearfix"> <span id="art_bot" class="jbTestPos"/> </div> </div> </div> </div>