网页开发中的Cookie使用指南
立即解锁
发布时间: 2025-08-20 01:27:10 阅读量: 6 订阅数: 19 


JavaScript入门与实践指南
### 网页开发中的Cookie使用指南
#### 1. Cookie的基本属性
Cookie是在网页开发中用于存储用户信息的一种机制。一个完整的Cookie字符串通常包含以下几个部分:
- **路径(Path)**:指定Cookie在哪些目录下可用。如果想让Cookie在域名的所有子目录下都可用,可以使用 `/` 字符指定根目录路径。例如:
```javascript
document.cookie = "UserName=Paul;expires=Tue, 28 Dec 2020 00:00:00;path=/;";
```
需要注意的是,虽然Windows系统的目录名不区分大小写,但很多其他操作系统(如Unix或Linux)是区分大小写的。
- **域名(Domain)**:可选部分,用于指定Cookie在哪些域名下可用。默认情况下,Cookie只在设置它的域名下的页面可用。例如,在 `MyPersonalWebSite.MyDomain.Com` 和 `MyBusinessWebSite.MyDomain.Com` 这两个域名下设置的Cookie是相互独立的。如果想让Cookie在指定域名的所有子域名下都可用,可以这样设置:
```javascript
document.cookie = "UserName=Paul;expires=Tue, 28 Dec 2020 00:00:00;path=/;domain=MyDomain.Com;";
```
但要注意,域名必须相同,不能跨不同的主域名共享Cookie。
- **安全(Secure)**:这是一个布尔值,若设置为 `true`,则Cookie只会通过安全通道(如SSL)发送到服务器;默认值为 `false`,表示无论安全设置如何,Cookie都会发送。此属性仅在服务器启用了SSL时有效。
#### 2. 创建Cookie
为了更方便地创建和设置Cookie的属性,可以编写一个函数。以下是一个名为 `setCookie` 的函数,将其添加到 `CookieFunctions.js` 文件中:
```javascript
function setCookie(cookieName, cookieValue, cookiePath, cookieExpires) {
cookieValue = escape(cookieValue);
if (cookieExpires == "") {
var nowDate = new Date();
nowDate.setMonth(nowDate.getMonth() + 6);
cookieExpires = nowDate.toGMTString();
}
if (cookiePath != "") {
cookiePath = ";Path=" + cookiePath;
}
document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpires + cookiePath;
}
```
这个函数的具体操作步骤如下:
1. 使用 `escape()` 函数对 `cookieValue` 进行编码,以处理不能直接使用的特殊字符,如分号。例如:
```javascript
alert(escape("2001 a space odyssey;"));
```
运行上述代码,空格会被转换为 `%20`,分号会被转换为 `%3B`。
2. 如果 `cookieExpires` 为空字符串,则将过期时间设置为当前日期的六个月后。
3. 如果 `cookiePath` 不为空字符串,则在其前面添加 `;Path=`。
4. 最后将 `cookieName`、`cookieValue`、`cookieExpires` 和 `cookiePath` 组合成一个完整的Cookie字符串,并赋值给 `document.cookie`。
以下是使用 `setCookie` 函数创建Cookie的示例:
```html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
function setCookie (cookieName, cookieValue, cookiePath, cookieExpires) {
cookieValue = escape(cookieValue);
if (cookieExpires == "") {
var nowDate = new Date();
nowDate.setMonth(nowDate.getMonth() + 6);
cookieExpires = nowDate.toGMTString();
}
if (cookiePath != "") {
cookiePath = ";Path=" + cookiePath;
}
document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpires + cookiePath;
}
setCookie("Name","Bob","","
```
0
0
复制全文
相关推荐










