| 類別 | 存放位置 | 有效範圍 | 生命週期 | 簡略說明 |
|---|---|---|---|---|
| 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 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);
}
透過Chrome檢查Cookie紀錄,結果如下:
● 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);
沒有留言:
張貼留言