深入理解HTTP Cookies及其在Web开发中的应用

Web开发中,HTTP Cookies是一种重要的机制,用于在客户端服务器之间保持状态信息。Cookies本质上是存储在用户计算机上的小数据包,允许服务器或脚本在HTTP协议下维护客户端工作站的状态信息。本文将详细解释Cookies的概念、作用以及如何在Web开发中使用Cookies。

什么是Cookie?

Cookie是一种小的数据包,用于存储用户计算机上的持久状态信息。在HTTP协议下,服务器或脚本可以通过Cookies来维护客户端工作站的状态信息。这种机制允许基于Web的应用程序存储关于选定项目、用户偏好、注册信息等的信息,这些信息可以在以后检索。

Cookie相关的HTTP

有两个HTTP头与Cookies相关:

  • Set-Cookie:服务器响应HTTP请求时发送的头,用于在用户系统上创建Cookie。
  • Cookie:客户端应用程序发送HTTP请求到服务器时包含的头,如果有匹配域和路径的Cookie。

Set-Cookie响应头使用以下格式:

Set-Cookie: =[; =]... [; expires=]; domain=] [; path=]; secure]

必须包含一个或多个字符串序列(由分号分隔),遵循模式=服务器可以使用这些字符串序列在客户端系统上存储数据。

通过使用格式expires=来设置过期日期,其中是格林威治标准时间(GMT)的过期日期。如果没有设置过期日期,Cookie在Internet会话结束后过期。否则,Cookie在缓存中保留,直到过期日期。日期必须遵循格式DAY, DD-MMM-YYYY HH:MM:SS GMT

使用模式domain=是可选的,用于指示持久Cookie的有效域名。如果指定的域名结尾与请求匹配,Cookie尝试匹配路径以确定是否应该发送Cookie。

使用模式path=是可选的,并且可以用来指定Cookie有效的URL子集。如果指定了路径,那么任何匹配该路径的请求都被认为是有效的。

Cookie也可以被标记为安全,这指定Cookie只能发送到HTTPS服务器。

Cookie头包含在任何具有匹配域和路径的Cookie的HTTP请求中。Cookie头的格式如下:

Cookie: = [;=]...

一个或多个字符串序列,使用格式=,包含在Cookie中设置的信息。

存储Cookies

Netscape Navigator和Internet Explorer以不同的方式存储Cookies,尽管它们从服务器捕获相同的材料。Netscape Navigator将每个Cookie存储在名为cookies.txt的单个文件中,而Internet Explorer则将每个Cookie存储在自己的文件中。

功能

默认方法加载到浏览器上,是一个简单的表单,用户可以输入他们想要的Cookie名称/值对。所有工作都在GetCookie方法中完成。为了能够在客户端机器上写入Cookie值,必须通知IIS服务器不要写入自己的头:

// Turn off sending header by MFC. pCtxt->m_bSendHeaders = FALSE;

包含Cookies的头将由程序使用ServerSupportFunction HTTP函数写入客户端计算机:

// Send our own headers. if (!pCtxt->ServerSupportFunction (HSE_REQ_SEND_RESPONSE_HEADER, NULL, &dwSize, (LPDWORD ) szHeaders)) { ISAPITRACE1 ("ServerSupportFunction failed: %d\n", GetLastError()); // Report an error. return; }

HTML表单的参数值将通过POSTHTTP数据传输接收到GetCookie方法中,并随后写入客户端。

示例Cookie头

Set-Cookie:Test=test_value; expires=Sat, 01-Jan-2000 00:00:00 GMT; path=/;
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485