>  기사  >  백엔드 개발  >  C#에서 쿠키 읽기 예제에 대한 자세한 설명

C#에서 쿠키 읽기 예제에 대한 자세한 설명

黄舟
黄舟원래의
2017-09-07 15:06:452141검색

C#에서 쿠키 읽기

링크:

1. 쿠키 작성

 1. Name 및 Value 속성은 프로그램에 의해 설정되며 기본값은 빈 참조입니다.

  2. 도메인 속성의 기본값은 이 쿠키를 발행하는 페이지가 어느 디렉토리에 있는지에 관계없이 현재 URL의 도메인 이름 부분입니다.

기본 도메인 속성은 www.kent.com입니다. 이 속성은 프로그램에서 필요한 값으로 설정할 수 있습니다.

  3. Path 속성의 기본값은 이 쿠키를 보내는 페이지가 어느 디렉토리에 있는지에 관계없이 루트 디렉토리, 즉 "/"입니다. 이 쿠키의 범위는 프로그램에서 특정 경로로 설정하여 추가로 제한할 수 있습니다.

  4. 만료 속성, 이 속성은 이 쿠키의 만료 날짜와 시간을 설정합니다. 쿠키의 유효기간을 설정하지 않은 경우(기본 설정) 쿠키도 생성될 수 있으나, 이는 이용자의 하드 드라이브에 저장되지 않고 이용자의 세션 정보의 일부로 남게 됩니다. 쿠키는 쿠키가 생성될 때 사라집니다. 브라우저가 닫혔거나 세션 시간이 초과되었습니다. 이러한 유형의 쿠키를 비영구 쿠키라고 합니다. SessionID를 저장하는 쿠키는 하드디스크에 저장되지 않고 메모리에만 존재하는 쿠키입니다.

 5. Response의 Cookies 속성에 보낼 쿠키를 첨부하여 클라이언트에 쿠키를 보냅니다: Response.Cookies.Add(Cookie)

  6. 동일한 Domain 속성 + Path 속성을 가진 쿠키는 모두 클라이언트에 존재합니다. 파일에서 쿠키는 "*"로 구분됩니다. 각 쿠키의 첫 번째 줄은 쿠키의 이름, 두 번째 줄은 값, 세 번째 줄은 도메인 속성 + 경로 속성으로 구성된 문자열로 이 쿠키의 범위를 나타내며 나머지 줄은 일일 처리 정보를 포함합니다. 만료 날짜 및 시간과 같은 쿠키의 정보입니다. 쿠키에는 간단한 체크섬도 있으므로 쿠키 이름이나 값의 길이가 변경되면 브라우저는 수정 사항을 감지하고 쿠키를 삭제합니다.

2. 쿠키 읽기

1. Request.Cookies 속성에는 클라이언트가 서버로 보낸 모든 쿠키의 모음이 포함되어 있습니다. 요청 URL 범위 내의 쿠키만 브라우저에서 HTTP와 함께 요청됩니다. 요청이 서버로 전송되었습니다.

  2. Name 및 Value 속성과 하위 키 값은 읽기 쉽습니다.

  3. Domain 및 Path 속성은 읽을 수 없습니다. Domain 속성은 항상 ""이고 Path 속성은 항상 "/"입니다. 원래 이러한 속성은 사용이 제한되었습니다. 귀하의 페이지가 쿠키와 동일한 도메인에 있지 않으면 페이지 위치에서 쿠키가 전혀 수신되지 않습니다.

  4. 쿠키의 유효기간과 시간을 읽을 수 없습니다. 실제로 브라우저는 쿠키 정보를 서버로 보낼 때 만료 정보를 포함하지 않습니다. Expires 속성을 읽을 수 있지만 항상 날짜/시간 값 0을 반환합니다. Expires 속성의 주요 역할은 브라우저가 쿠키 저장에 대한 일상적인 관리를 수행하도록 돕는 것입니다. 서버의 관점에서 쿠키는 존재하거나 존재하지 않으므로 만료 날짜는 서버에 유용한 정보가 아닙니다. 따라서 브라우저는 쿠키를 보낼 때 이 정보를 제공하지 않습니다. 쿠키의 만료 날짜가 필요한 경우 다시 설정해야 합니다.

3. 쿠키 수정 및 삭제

1. 실제로 쿠키를 직접 수정할 수는 없습니다. 동일한 이름의 쿠키를 생성하고 해당 쿠키를 브라우저로 보내 클라이언트 컴퓨터의 이전 쿠키를 덮어써야 합니다. .

  2. 마찬가지로 쿠키를 직접 삭제할 수는 없습니다. 브라우저가 쿠키의 유효 기간을 확인할 때 쿠키의 유효 기간을 과거의 특정 시점으로 수정하도록 할 수 있습니다. 만료된 쿠키는 삭제됩니다. 유효 기간 수정 및 쿠키 삭제

IV. 쿠키와 세션의 관계

 1. asp.net의 세션은 쿠키와 쿠키 없는 두 가지 방법을 사용할 수 있습니다. 클라이언트와 서버 사이를 오가는 데에는 쿠키 사용이 필요하지 않으며 이 방법은 여기서 논의하지 않습니다.

  2. asp.net에서 클라이언트가 처음으로 URL을 요청하면 서버는 클라이언트에 대한 SessionID를 생성하고 이를 비영구 쿠키로 클라이언트에 보냅니다.

 3. 비영구 쿠키는 브라우저를 닫은 후에만 사라집니다. 세션 시간 초과 판단은 다음과 같습니다.

 3.1 클라이언트가 서버에 처음 액세스하면 비영구적인 SessionID가 부여됩니다. 쿠키가 클라이언트에게 전송됩니다.

  3.2 브라우저가 닫히기 전에 이 URL에 접속하면 브라우저는 SessionID를 서버로 보내고, 서버는 SessionID를 기반으로 클라이언트에 해당하는 서버의 다양한 상태(즉, 다양한 값 ​​세션에 저장됨) 이러한 세션은 웹 애플리케이션에서 작동할 수 있습니다.

 3.3 서버는 이 SessionID의 만료 시간을 유지하며, 세션 시간 초과는 IIS에서 설정할 수 있습니다. 각 요청으로 인해 서버는 설정된 제한 시간만큼 이 SessioID의 만료 시간을 연장합니다.

  3.4 서버에서 SessionID가 만료된 것을 발견하면, 즉 고객이 설정된 제한 시간 내에 사이트를 다시 방문하지 않은 경우 SessionID는 이 SessionID와 관련된 모든 Session 변수와 함께 삭제됩니다.

 3.5 클라이언트의 브라우저가 닫히기 전에는 서버가 SessionID를 삭제했다는 사실을 알지 못합니다. 클라이언트는 여전히 이 SessionID의 쿠키를 서버에 전송하지만 이때 서버는 더 이상 SessionID를 인식하지 못하고 사용자를 삭제하게 됩니다. . 신규 사용자로서 새로운 SessionID를 다시 할당하세요.

쿠키 생성:

gjy 값과 유효 기간 1일로 클라이언트에 사용자 이름 쿠키를 생성합니다.

방법 1:

Response.Cookies["username"].Value="zxf";
Response.Cookies["username"].Expires=DateTime.Now.AddDays(1);

방법 2:

System.Web.HttpCookie newcookie=new HttpCookie("username");
newcookie.Value="gjy";
newcookie.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(newcookie);

하위 키를 사용하여 쿠키 생성:

System.Web.HttpCookie newcookie=new HttpCookie("user");
newcookie.Values["username"]="zxf";
newcookie.Values["password"]="111";
newcookie.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(newcookie);

또는:

System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);

쿠키 읽기:

하위 키 없이 읽기:

if(Request.Cookies["username"]!=null)
{
Response.Write(Server.UrlDecode(Request.Cookies["username"]));

또는:

HttpContext.Current.Request.Cookies[strCookieName]
}

하위 키로 읽기:

if(Request.Cookies["user"]!=null)
{
Response.Write(Server.UrlDecode(Request.Cookies["user"]["username"].Value));
Response.Write(Server.UrlDecode(Request.Cookies["user"]["password"].Value));

추가하고 읽는 두 가지 방법:

추가:

Response.AppendCookie(newcookie);
System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);

읽기:

Request.Cookies["username"]
HttpContext.Current.Request.Cookies["username"]

쿠키의 만료 시간을 설정하지 않는 한, 브라우저가 닫힐 때 쿠키는 자동으로 만료됩니다.

쿠키 수정 시간을 삭제하세요: Cookie.Expires = DateTime.Now.AddDays( -1 );

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

 
public class Cookie
{
    /// <summary>
    /// Cookies赋值
    /// </summary>
    /// <param name="strName">主键</param>
    /// <param name="strValue">键值</param>
    /// <param name="strDay">有效天数</param>
    /// <returns></returns>
    public bool setCookie(string strName, string strValue, int strDay)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(strDay);
            Cookie.Value = strValue;
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }

    /// <summary>
    /// 读取Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>
 
    public string getCookie(string strName)
    {
        HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
        if (Cookie != null)
        {
            return Cookie.Value.ToString();
        }
        else
        {
            return null;
        }
    }

    /// <summary>
    /// 删除Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>
    public bool delCookie(string strName)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(-1);
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }
}


예:

Cookie Cookie = new Cookie();
Cookie.setCookie("name", "aaa",1);//赋值
Cookie.getCookie("name");//取值
Cookie.delCookie("name");//删除
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
public class Cookie
{
    /// <summary>
    /// Cookies赋值
    /// </summary>
    /// <param name="strName">主键</param>
    /// <param name="strValue">键值</param>
    /// <param name="strDay">有效天数</param>
    /// <returns></returns>
    public bool setCookie(string strName, string strValue, int strDay)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(strDay);
            Cookie.Value = strValue;
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }
    /// <summary>
    /// 读取Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>
 
    public string getCookie(string strName)
    {
        HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName];
        if (Cookie != null)
        {
            return Cookie.Value.ToString();
        }
        else
        {
            return null;
        }
    }
    /// <summary>
    /// 删除Cookies
    /// </summary>
    /// <param name="strName">主键</param>
    /// <returns></returns>
    public bool delCookie(string strName)
    {
        try
        {
            HttpCookie Cookie = new HttpCookie(strName);
            //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
            Cookie.Expires = DateTime.Now.AddDays(-1);
            System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
            return true;
        }
        catch
        {
            return false;
        }
    }
}

예:

Cookie Cookie = new Cookie();
Cookie.setCookie("name", "aaa",1);//赋值
Cookie.getCookie("name");//取值
Cookie.delCookie("name");//删除

참고:쿠키가 중국어로 왜곡되면 저장 시 Cookie.setCookie("name")과 같이 중국어로 인코딩됩니다. , Server.UrlEncode("aaa"),1), 읽을 때 그냥 디코딩하세요

또한: 쿠키에 만료 시간이 설정되어 있지 않은 한 브라우저를 닫으면 쿠키가 자동으로 만료됩니다.

위 내용은 C#에서 쿠키 읽기 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.