程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 總結C#收集編程中關於Cookie的設定要點

總結C#收集編程中關於Cookie的設定要點

編輯:C#入門知識

總結C#收集編程中關於Cookie的設定要點。本站提示廣大學習愛好者:(總結C#收集編程中關於Cookie的設定要點)文章只能為提供參考,不一定能成為您想要的結果。以下是總結C#收集編程中關於Cookie的設定要點正文


花了2地利間,完全弄清C#中cookie的內容,弄清以下內容將讓你對一切網站的cookie都盡在控制當中.

cookieCollection是一個針對一個域一切的cookie的聚集
cookeContainer是一個容器,外面可以裝多個域的cookie的聚集,即一個

cookieContainer可以包括多個cookieCollection,這個容器可以界說年夜小,決議

最多裝若干個cookie,假如裝滿了還要再裝,它會主動剔除本來過時的cookie.

再說到一個cookie的構造:
Cookie由變量名和值構成,相似Javascript變量。其屬性裡既有尺度的Cookie

變量,也有效戶本身創立的變量,屬性中變量是用“變量=值”情勢來保留。
  依據Netscape公司的劃定,Cookie格局以下:

  Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;

Domain=DOMAIN_NAME;SECURE

  NAME=VALUE:

  這是每個Cookie均必需有的部門。NAME是該Cookie的稱號,VALUE是該

Cookie的值。在字符串“NAME=VALUE”中,不含分號、逗號和空格等
字符。
  Expires=DATE:Expires變量是一個只寫變量,它肯定了Cookie有用終止日

期。該屬性值DATE必需以特定的格局來書寫:禮拜幾,
DD-MM-YY HH:MM:SS GMT,GMT表現這是格林尼治時光。反之,不以如許的格

式來書寫,體系將沒法辨認。該變量可省,假如缺省時,
則Cookie的屬性值不會保留在用戶的硬盤中,而僅僅保留在內存傍邊,Cookie

文件將跟著閱讀器的封閉而主動消逝。
  Domain=DOMAIN-NAME:Domain該變量是一個只寫變量,它肯定了哪些

Internet域中的Web辦事器可讀取閱讀器所存取的Cookie,即只要來自這
個域的頁面才可使用Cookie中的信息。這項設置是可選的,假如缺省時,設

置Cookie的屬性值為該Web辦事器的域名。
  Path=PATH:Path屬性界說了Web辦事器上哪些途徑下的頁面可獲得辦事器

設置的Cookie。普通假如用戶輸出的URL中的途徑部門從第一個字符
開端包括Path屬性所界說的字符串,閱讀器就以為經由過程檢討。假如Path屬性的

值為“/”,則Web辦事器上一切的WWW資本都可讀取該Cookie。異樣
該項設置是可選的,假如缺省時,則Path的屬性值為Web辦事器傳給閱讀器的資

源的途徑名。
  可以看出我們借助對Domain和Path兩個變量的設置,便可有用地掌握

Cookie文件被拜訪的規模。
  Secure:在Cookie中標志該變量,注解只要當閱讀器和Web Server之間的

通訊協定為加密認證協定時,閱讀器才向辦事器提交響應的
Cookie。以後這類協定只要一種,即為HTTPS。
以上的cookie內容中,真正發送給辦事器的內容,只要NAME和VALUE對,其他器械

都是給客戶真個閱讀器用來治理cookie的,好比能否寄存在硬盤上?寄存多久?這

閱讀器在拜訪哪一個網站的時刻要發這個cookie.

這幾個類型的轉換辦法:
cookieContainer.GetCookies()取得cookieCollection,而cookieCollection直

接加索引號取得某一個詳細的cookie,

cookieContainer.add()可以添加cookie或許cookieCollection,乃至直接用

http的頭中的cookie信息便可以直接往cookieContainer中添加cookie,用

cookieContainer.SetCookies(Uri, string)來完成,個中的string就是cookie的字符串內容,這個字符串可以經由過程response.Headers.Get("Set-Cookie")取得,這裡留意一點,SetCookies()函數中的Uri,不克不及和cookie字符串中的域名Domain完整雷同,好比Uri=new Uri("http://.谷歌.com"),而cookie中的

Domain=.谷歌.com,這個時刻cookieContainer.SetCookies()函數將會報錯,

提醒域名不准確,處理辦法是,uri = new Uri("http://www.谷歌.com")便可,

橫豎改成其他的相似途徑都可以,為何不克不及雷同,誰曉得呢,問微軟去.就這個

處所的成績,害我耗了幾個小時.

CookieContainer.GetCookieHeader()函數可以讀出cookieContainer中一切指

定網站的cookie,以字符串方法顯示.
本身想要輸出字符串零丁結構cookie,也很簡略,Cookie的結構函數就弄定.

cookie操作實例

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;
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved