/*! Returns the raw form of this QNetworkCookie. The QByteArray returned by this function is suitable for an HTTP header, either in a server response (the Set-Cookie header) or the client request (the Cookie header). You can choose from one of two formats, using \a form. \sa parseCookies() */ QByteArray QNetworkCookie::toRawForm(RawForm form) const { QByteArray result; if (d->name.isEmpty()) return result; // not a valid cookie result = d->name; result += '='; if ((d->value.contains(';') || d->value.contains(',') || d->value.contains(' ') || d->value.contains('"')) && (!d->value.startsWith('"') && !d->value.endsWith('"'))) { result += '"'; QByteArray value = d->value; value.replace('"', "\\\""); result += value; result += '"'; } else { result += d->value; } if (form == Full) { // same as above, but encoding everything back if (isSecure()) result += "; secure"; if (isHttpOnly()) result += "; HttpOnly"; if (!isSessionCookie()) { result += "; expires="; result += QLocale::c().toString(d->expirationDate.toUTC(), QLatin1String("ddd, dd-MMM-yyyy hh:mm:ss 'GMT")).toLatin1(); } if (!d->domain.isEmpty()) { result += "; domain="; QString domainNoDot = d->domain; if (domainNoDot.startsWith(QLatin1Char('.'))) { result += '.'; domainNoDot = domainNoDot.mid(1); } result += QUrl::toAce(domainNoDot); } if (!d->path.isEmpty()) { result += "; path="; result += QUrl::toPercentEncoding(d->path, "/"); } } return result; }
/*! Returns the raw form of this QNetworkCookie. The QByteArray returned by this function is suitable for an HTTP header, either in a server response (the Set-Cookie header) or the client request (the Cookie header). You can choose from one of two formats, using \a form. \sa parseCookies() */ QByteArray QNetworkCookie::toRawForm(RawForm form) const { QByteArray result; if (d->name.isEmpty()) return result; // not a valid cookie result = d->name; result += '='; result += d->value; if (form == Full) { // same as above, but encoding everything back if (isSecure()) result += "; secure"; if (isHttpOnly()) result += "; HttpOnly"; if (!isSessionCookie()) { result += "; expires="; result += QLocale::c().toString(d->expirationDate.toUTC(), QLatin1String("ddd, dd-MMM-yyyy hh:mm:ss 'GMT")).toLatin1(); } if (!d->domain.isEmpty()) { result += "; domain="; if (d->domain.startsWith(QLatin1Char('.'))) { result += '.'; result += QUrl::toAce(d->domain.mid(1)); } else { QHostAddress hostAddr(d->domain); if (hostAddr.protocol() == QAbstractSocket::IPv6Protocol) { result += '['; result += d->domain.toUtf8(); result += ']'; } else { result += QUrl::toAce(d->domain); } } } if (!d->path.isEmpty()) { result += "; path="; result += d->path.toUtf8(); } } return result; }