共用方式為


HTTP Cookie

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

有兩個標頭Set-Cookie和 Cookie,與 Cookie 相關。 伺服器會傳送Set-Cookie標頭以回應 HTTP 要求,用來在使用者的系統上建立 Cookie。 如果 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 是 Greenwich Mean Time (GMT) 的到期日。 如果未設定到期日,Cookie 會在網際網路會話結束時到期。 否則,Cookie 會保存在快取中,直到到期日為止。 日期必須使用下列格式:

DAYDD-MMM-YYYYHHMMSS GMT

一天

星期 (Sun、Mon、Fri、Wed、Thu、Fri、Sat) 。

Dd

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

月份的三個字母縮寫 (Jan、Feb、Mar、Apr、May、Jun、Jul、Oct、Nov、Dec) 。

YYYY

年。

HH

(22 的小時值是下午 10:00,例如) 。

毫米

分鐘值。

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 網際網路內,這表示 Cookie 無法透過 InternetGetCookie 函式擷取。

Cookie 標頭隨附于具有其網域和路徑符合要求之 Cookie 的任何 HTTP 要求中。 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 Services (WinHTTP)