共用方式為


HTTP Cookie

HTTP Cookie 會提供一個機制來儲存和擷取用戶端應用程式系統上的狀態資訊。 此機制可讓 Web 應用程式儲存所選專案、使用者喜好設定、註冊資訊,以及稍後可擷取的其他資訊。

Set-Cookie 和 Cookie 有兩個標頭與 Cookie 相關。 Set-Cookie 標頭是由伺服器傳送,以回應 HTTP 要求,用來在用戶的系統上建立 Cookie。 如果有具有相符網域和路徑的 Cookie,則用戶端應用程式會包含傳送至伺服器的 HTTP 要求。

Set-Cookie 回應標頭使用下列格式:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

遵循模式名稱=值的一或多個字串序列(以分號分隔)必須包含在 Set-Cookie 回應標頭中。 伺服器可以使用這些字串序列,將資料儲存在客戶端的系統上。

到期日是使用 expires=date 格式來設定,其中 date 是格林威治平均時間 (GMT) 中的到期日。 如果未設定到期日,Cookie 會在因特網會話結束之後到期。 否則,Cookie 會保存在快取中,直到到期日為止。 日期必須使用下列格式:

DAYDD-MMM-YYYY HH:MMSS GMT

DAY

一周的一天(太陽,星期一,週二,星期二,星期三,星期五,星期六,星期六)。

DD

月份的日期(例如當月第一天的 01)。

本月的三個字母縮寫(1月、2月、Mar、Apr、May、Jun、Jul、8月、Sep、Oct、Nov、Dec)。

YYYY

年。

HH

例如,軍事時間的小時值(例如下午 22:00 為 10:00)。

MM

分鐘值。

SS

第二個值。

使用 pattern domain=domain_name 指定功能變數名稱是持續性 Cookie 的選擇性名稱,可用來指出 Cookie 有效之網域的結尾。 指定網域的會話 Cookie 遭到拒絕。 如果指定的域名結尾符合要求,Cookie 會嘗試比對路徑,以判斷是否應該傳送 Cookie。 例如,如果功能變數名稱結尾為 .microsoft.com,則會檢查對 home.microsoft.com 和 support.microsoft.com 的要求,以查看指定的模式是否符合要求。 功能變數名稱中至少必須有兩個或三個句號,以防止針對廣泛使用的域名結尾設定Cookie,例如.com、.edu和 co.jp。 允許的域名類似於 .microsoft.com、.someschool.edu 和 .someserver.co.jp。 只有指定網域內的主機可以設定網域的Cookie。

使用模式 path=some_path設定路徑是選擇性的,可用來指定 Cookie 有效 URL 的子集。 如果指定路徑,則 Cookie 會針對符合該路徑的任何要求視為有效。 例如,如果指定的路徑是 /example,則具有 /examplecode 和 /example/code.htm 路徑的要求會相符。 如果未指定路徑,則會假設路徑是與 Set-Cookie 標頭相關聯的資源路徑。

Cookie 也可以標示為安全,指定只能將 Cookie 傳送至 HTTPs 伺服器。

最後,Cookie 可以標示為 HttpOnly(屬性不區分大小寫),以指出 Cookie 不可編寫腳本,且不應基於安全性考慮向用戶端應用程式顯示。 在 Windows 因特網內,這表示無法透過 InternetGetCookie 函式擷取 Cookie。

Cookie 標頭隨附於任何 HTTP 要求,其網域和路徑符合要求的 Cookie。 Cookie 標頭的格式如下:

Cookie: <name>=<value> [;<name>=<value>]...

一或多個字串序列,使用格式名稱=,包含Cookie中設定的資訊。

產生 Cookie

有三種方法可以產生 Microsoft Internet Explorer 的 Cookie:使用 Microsoft JScript、使用 WinINet 函式,以及使用 CGI 腳本。 所有方法都需要設定 Set-Cookie 標頭中包含的資訊。

使用動態 HTML (DHTML) 物件模型,可以呼叫 檔物件的 cookie 屬性來設定 Cookie ,如下列範例所示。

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

使用 InternetSetCookie 函式的應用程式可以建立 Cookie。 如需詳細資訊,請參閱 設定 Cookie

Cookie 是藉由將 Set-Cookie 標頭包含在 HTTP 回應中要求之 CGI 腳本的一部分來產生。

下列範例是 CGI 腳本,其中包含使用 Perl 的 Set-Cookie 標頭。

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

注意

WinINet 不支援伺服器實作。 此外,不應該從服務使用。 針對伺服器實作或服務,請使用 Microsoft Windows HTTP 服務 (WinHTTP)