類別 | 存放位置 | 有效範圍 | 生命週期 | 簡略說明 |
---|---|---|---|---|
Cookie | 客戶端 | 可跨頁面 可跨子網域 |
依據設定值 | 1.傳遞小資料,避免佔頻寬 2.記憶體Cookie(瀏覽器關閉則消失)、硬碟Cookie(有到期時間或手動刪除) 3.避免敏感資料 |
QueryString | 客戶端 | 當關閉或產生新的URL | 1.使用上方便 2.避免敏感資料 3.部分瀏覽器對於Querystring有長度限制 |
● Cookie
//SET Cookie HttpCookie cookie = new HttpCookie("WEB"); cookie.Path = "/"; //設定Cookie的Path(只能在相同URL去Get) cookie["CV1"] = "001"; //此方法會整體複寫 Cookie["Key"] 的 Value. cookie.Values.Add("CV2", "002"); //此方法會接續在後,如: CV1=001&CV1=0002 cookie.Values.Add("CV2", "002-2"); cookie.Values.Add("", ""); cookie.Expires.AddSeconds(30); //設定cookie到期時間 Response.Cookies.Add(cookie); //加入至Response物件,才可回應資料 //GET Cookie //方法一 string reqStr = Request.Cookies["WEB"]["CV1"]; //方法二 Dictionary透過Chrome檢查Cookie紀錄,結果如下:keyValuePairs = new Dictionary (); HttpCookie reqCookie = Request.Cookies["WEB"]; foreach (string value in reqCookie.Values) { keyValuePairs.Add(value, Request.Cookies["WEB"][value]); } //Remove Cookie if (base.Request.Cookies["WEB"] != null) { base.Response.Cookies["WEB"].Expires = DateTime.Now.AddDays(-1); }
● QueryString
- 在URL設置參數前則會有「?」的作為開頭
- [Key]=[Value] 的結構觀念去寫至URL上,如 → UserID=admin&Password=admin
protected void QueryStringButton_Click(object sender, EventArgs e)
{
var id = System.Web.HttpUtility.UrlEncode(this.AccountTextBox.Text);
var psd = System.Web.HttpUtility.UrlEncode(this.PasswordTextBox.Text);
Response.Redirect($"~/LoginInfo.aspx?UserID={id}&Password={psd}");
}
// 取得
// 指定特定key
string strReq = Request.QueryString["參數名稱"];
Response.Write(strReq);
沒有留言:
張貼留言