在 JavaScript 中通過?`document.cookie`?屬性,你可以創建、維護和刪除 cookie。創建 cookie 時該屬性等同于?`Set-Cookie`?消息頭,而在讀取 cookie 時則等同于?`Cookie`?消息頭。在創建一個 cookie 時,你需要使用和?`Set-Cookie`?期望格式相同的字符串:
~~~
document.cookie="name=Nicholas;domain=nczonline.net;path=/";
~~~
設置?`document.cookie`?屬性的值并不會刪除存儲在頁面中的所有 cookie。它只簡單的創建或修改字符串中指定的 cookie。下次發送一個請求到服務器時,通過?`document.cookie`?設置的 cookie 會和其它通過?`Set-Cookie`?消息頭設置的 cookie 一并發送至服務器。這些 cookie 并沒有什么明確的不同之處。
要使用 JavaScript 提取 cookie 的值,只需要從?`document.cookie`?中讀取即可。返回的字符串與?`Cookie`?消息頭中的字符串格式相同,所以多個 cookie 會被分號和字符串分割。例如:
~~~
name1=Greg; name2=Nicholas
~~~
鑒于此,你需要手工解析這個 cookie 字符串來提取真實的 cookie 數據。當前已有許多描述如何利用 JavaScript 來解析 cookie 的資料,包括我的書,[Professional JavaScript](http://www.amazon.com/gp/product/047022780X?ie=UTF8&tag=nczonline-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=047022780X),所以在這我就不再說明。通常利用已存在的 JavaScript 庫操作 cookie 會更簡單,如使用?[YUI Cookie utility](http://developer.yahoo.com/yui/cookie/)?來處理 cookie,而不要手工重新創建這些算法。
通過訪問?`document.cookie`?返回的 cookie 遵循發向服務器的 cookie 一樣的訪問規則。要通過 JavaScript 訪問 cookie,該頁面和 cookie 必須在相同的域中,有相同的?`path`,有相同的安全級別。
注意:一旦 cookie 通過 JavaScript 設置后便不能提取它的選項,所以你將不能知道?`domain`,`path`,`expires`?日期或?`secure`?標記。