Search in sources :

Example 1 with ServerCookies

use of org.apache.tomcat.util.http.ServerCookies in project tomcat by apache.

the class Request method parseCookies.

/**
 * Parse cookies. This only parses the cookies into the memory efficient
 * ServerCookies structure. It does not populate the Cookie objects.
 */
protected void parseCookies() {
    if (cookiesParsed) {
        return;
    }
    cookiesParsed = true;
    ServerCookies serverCookies = coyoteRequest.getCookies();
    serverCookies.setLimit(connector.getMaxCookieCount());
    CookieProcessor cookieProcessor = getContext().getCookieProcessor();
    cookieProcessor.parseCookieHeader(coyoteRequest.getMimeHeaders(), serverCookies);
}
Also used : CookieProcessor(org.apache.tomcat.util.http.CookieProcessor) ServerCookies(org.apache.tomcat.util.http.ServerCookies)

Example 2 with ServerCookies

use of org.apache.tomcat.util.http.ServerCookies in project tomcat by apache.

the class CoyoteAdapter method parseSessionCookiesId.

/**
 * Parse session id in Cookie.
 *
 * @param request The Servlet request object
 */
protected void parseSessionCookiesId(Request request) {
    // If session tracking via cookies has been disabled for the current
    // context, don't go looking for a session ID in a cookie as a cookie
    // from a parent context with a session ID may be present which would
    // overwrite the valid session ID encoded in the URL
    Context context = request.getMappingData().context;
    if (context != null && !context.getServletContext().getEffectiveSessionTrackingModes().contains(SessionTrackingMode.COOKIE)) {
        return;
    }
    // Parse session id from cookies
    ServerCookies serverCookies = request.getServerCookies();
    int count = serverCookies.getCookieCount();
    if (count <= 0) {
        return;
    }
    String sessionCookieName = SessionConfig.getSessionCookieName(context);
    for (int i = 0; i < count; i++) {
        ServerCookie scookie = serverCookies.getCookie(i);
        if (scookie.getName().equals(sessionCookieName)) {
            // Override anything requested in the URL
            if (!request.isRequestedSessionIdFromCookie()) {
                // Accept only the first session id cookie
                convertMB(scookie.getValue());
                request.setRequestedSessionId(scookie.getValue().toString());
                request.setRequestedSessionCookie(true);
                request.setRequestedSessionURL(false);
                if (log.isDebugEnabled()) {
                    log.debug(" Requested cookie session id is " + request.getRequestedSessionId());
                }
            } else {
                if (!request.isRequestedSessionIdValid()) {
                    // Replace the session id until one is valid
                    convertMB(scookie.getValue());
                    request.setRequestedSessionId(scookie.getValue().toString());
                }
            }
        }
    }
}
Also used : Context(org.apache.catalina.Context) ServerCookie(org.apache.tomcat.util.http.ServerCookie) ServerCookies(org.apache.tomcat.util.http.ServerCookies)

Example 3 with ServerCookies

use of org.apache.tomcat.util.http.ServerCookies in project tomcat by apache.

the class Request method convertCookies.

/**
 * Converts the parsed cookies (parsing the Cookie headers first if they
 * have not been parsed) into Cookie objects.
 */
protected void convertCookies() {
    if (cookiesConverted) {
        return;
    }
    cookiesConverted = true;
    if (getContext() == null) {
        return;
    }
    parseCookies();
    ServerCookies serverCookies = coyoteRequest.getCookies();
    CookieProcessor cookieProcessor = getContext().getCookieProcessor();
    int count = serverCookies.getCookieCount();
    if (count <= 0) {
        return;
    }
    cookies = new Cookie[count];
    int idx = 0;
    for (int i = 0; i < count; i++) {
        ServerCookie scookie = serverCookies.getCookie(i);
        try {
            // We must unescape the '\\' escape character
            Cookie cookie = new Cookie(scookie.getName().toString(), null);
            scookie.getValue().getByteChunk().setCharset(cookieProcessor.getCharset());
            cookie.setValue(unescape(scookie.getValue().toString()));
            cookies[idx++] = cookie;
        } catch (IllegalArgumentException e) {
        // Ignore bad cookie
        }
    }
    if (idx < count) {
        Cookie[] ncookies = new Cookie[idx];
        System.arraycopy(cookies, 0, ncookies, 0, idx);
        cookies = ncookies;
    }
}
Also used : Cookie(jakarta.servlet.http.Cookie) ServerCookie(org.apache.tomcat.util.http.ServerCookie) CookieProcessor(org.apache.tomcat.util.http.CookieProcessor) ServerCookie(org.apache.tomcat.util.http.ServerCookie) ServerCookies(org.apache.tomcat.util.http.ServerCookies)

Aggregations

ServerCookies (org.apache.tomcat.util.http.ServerCookies)3 CookieProcessor (org.apache.tomcat.util.http.CookieProcessor)2 ServerCookie (org.apache.tomcat.util.http.ServerCookie)2 Cookie (jakarta.servlet.http.Cookie)1 Context (org.apache.catalina.Context)1