strange behavior of KCookieServer
- Date: Fri, 13 Jul 2018 17:20:10 +0200
- From: Stefano Crocco <stefano.crocco@xxxxxxxx>
- Subject: strange behavior of KCookieServer
Hello to everyone,
in my ongoing attempt to integrate Konqueror and QWebEngine, I'm still
struggling with a way to share cookies between QWebEngineCookieStore and
KCookieServer. While investigating this issue, I found a problem when adding
cookies to KCookieServer by hand which doesn't seem happen when using
Konqueror with either KHTML or KWebKitPart. I think I know how I could solve
(or work around) this issue but I don't understand why it's happening and I'd
like some insight about this.
The isssue I noticed concerns cookies with an "expire" field and I believe,
after looking at the code for KCookieJar and KCookieServer, it is related to
time zone handling by KCookieJar.
I live in Italy, so my time zone is CEST, which (unless I'm mistaken) means
GTM+2. If now (16:30 CEST, 14:30 GMT), a web page sent me a cookie which
should expire in 30 minutes (17:00 CEST, 15:00 GMT), it would have an
"expires" field like "expires: Fri, 13-Jul-2018 15:00:00 GMT".
I tried to add such a cookie from the command line, like this:
qdbus org.kde.kcookiejar5 /modules/kcookiejar addCookies http://xyz.it "Set-
Cookie: test=hello; expires=Fri, 13-Jul-2018 15:00:00 GMT; domain=.xyz.it;
but in the cookies page in System Settings doesn't show the cookie. If I
change the "expires" field in the cookie so that the hour becomes 17:00:00, the
cookie is added.
The problem, I believe, is that KCookieJar::parseDate calls
QLocale::toDateTime, which seems to create a QDateTime with the local time
zone (in my case, CEST). This means that the cookie expire date, which was in
GMT, is interpreted as if it were in CEST and, of course, the cookie is
Thanks in advance for any help in understanding what's happening.