我有一个从浏览器中删除cookie的功能,出于某种奇怪的原因,我的所有细节都是正确的,它是在Mozilla中使用firebug完成和监控的,下面是我的创建,删除和读取cookie函数:
PROCEDURE create_Session_Cookie (i_Value IN VARCHAR2)
IS
BEGIN
-- Create a cookie
OWA_COOKIE.send (name => 'CreateCookie',
VALUE => i_Value,
expires => SYSDATE + INTERVAL '15' MINUTE,
PATH => '/hello');
--owa_util.http_header_close;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END create_Session_Cookie;
PROCEDURE delete_Session_Cookie
IS
BEGIN
OWA_COOKIE.REMOVE(
name => 'CreateCookie',
val => read_Session_Cookie
);
END delete_Session_Cookie;
FUNCTION read_Session_Cookie
RETURN VARCHAR2
IS
l_SessionCookie OWA_COOKIE.COOKIE;
l_SessionValue VARCHAR2 (50);
BEGIN
-- Read cookie into cookie record
l_SessionCookie := OWA_COOKIE.GET ('CreateCookie');
-- Extract value from cookie record
l_SessionValue := l_SessionCookie.VALS (1);
RETURN l_SessionValue;
-- If the cookie does not exist an exception will be thrown
-- so we return null
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END read_Session_Cookie;`
之前有人有这样的问题吗?
答案 0 :(得分:0)
事实上。在删除它们时,OWA_COOKIE的结果非常复杂。我刚刚实现的解决方案是在我的沙盒中工作。
我只是执行另一组,而是将过期日期设置为过去的某个日期,而不是使用OWA_COOKIE.REMOVE调用。
在观看使用fiddler2设置的cookie之后,看起来无论如何都应该这样做。不同的是路径和安全选项设置,我的cookie实际上消失了。希望这会有所帮助。
OWA_COOKIE.SEND(
NAME => 'CreateCookie',
VALUE => read_session_cookie, --Could also set this to null
EXPIRES => SYSDATE -1,
PATH => '/',
DOMAIN => 'mydomain.com',
SECURE => NULL);