使用字段名为 'Set-Cookie' 的 sa_set_http_header 系统过程支持 cookie 状态管理。在利用 cookie 进行状态管理时,不需要将会话 ID 包含在 URL 中。而是由客户端在其 HTTP cookie 标头中提供会话 ID。使用 cookie 进行状态管理的缺点是,在客户端可能已禁用 cookie 的非管制环境中,就不能依赖 cookie 支持。因此,Web 应用程序应同时支持 URL 和 cookie 会话状态管理。正如上一节中所述,在客户端同时提供 URL 和 cookie 会话 ID 时,URL 会话 ID 优先。在会话到期或被显式删除时,则由 Web 应用程序负责删除 SessionID cookie(例如,sa_set_http_option('SessionID', NULL))。
DECLARE session_id VARCHAR(64); DECLARE tm TIMESTAMP; SET tm=now(*); SET session_id = 'session_' || CONVERT( VARCHAR, SECONDS(tm)*1000+DATEPART(millisecond,tm)); CALL sa_set_http_option('SessionID', session_id); CALL sa_set_http_header( 'Set-Cookie', 'sessionid=' || session_id || ';' || 'max-age=60;' || 'path=/session;' ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |