Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere Web 服务 » 使用 HTTP 会话

 

使用 cookie 的会话管理

使用字段名为 '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;' );