Java Code Examples for javax.servlet.http.HttpServletResponse#SC_MULTIPLE_CHOICES

The following examples show how to use javax.servlet.http.HttpServletResponse#SC_MULTIPLE_CHOICES . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: HttpProxy.java    From haven-platform with Apache License 2.0 5 votes vote down vote up
private boolean doResponseRedirectOrNotModifiedLogic(HttpProxyContext proxyContext,
                                                     HttpResponse proxyResponse,
                                                     int statusCode) throws ServletException, IOException {
    HttpServletResponse servletResponse = proxyContext.getResponse();
    // Check if the proxy response is a redirect
    // The following code is adapted from org.tigris.noodle.filters.CheckForRedirect
    if (statusCode >= HttpServletResponse.SC_MULTIPLE_CHOICES /* 300 */
            && statusCode < HttpServletResponse.SC_NOT_MODIFIED /* 304 */) {
        Header locationHeader = proxyResponse.getLastHeader(HttpHeaders.LOCATION);
        if (locationHeader == null) {
            throw new ServletException("Received status code: " + statusCode
                    + " but no " + HttpHeaders.LOCATION + " header was found in the response");
        }
        // Modify the redirect to go to this proxy servlet rather that the proxied host
        String locStr = rewriteUrlFromResponse(proxyContext, locationHeader.getValue());

        servletResponse.sendRedirect(locStr);
        return true;
    }
    // 304 needs special handling.  See:
    // http://www.ics.uci.edu/pub/ietf/http/rfc1945.html#Code304
    // We get a 304 whenever passed an 'If-Modified-Since'
    // header and the data on disk has not changed; server
    // responds w/ a 304 saying I'm not going to send the
    // body because the file has not changed.
    if (statusCode == HttpServletResponse.SC_NOT_MODIFIED) {
        servletResponse.setIntHeader(HttpHeaders.CONTENT_LENGTH, 0);
        servletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
        return true;
    }
    return false;
}
 
Example 2
Source File: ApiProxyServlet.java    From onboard with Apache License 2.0 5 votes vote down vote up
protected boolean doResponseRedirectOrNotModifiedLogic(HttpServletRequest servletRequest,
        HttpServletResponse servletResponse, HttpResponse proxyResponse, int statusCode) throws ServletException, IOException {
    // Check if the proxy response is a redirect
    // The following code is adapted from org.tigris.noodle.filters.CheckForRedirect
    if (statusCode >= HttpServletResponse.SC_MULTIPLE_CHOICES /* 300 */
            && statusCode < HttpServletResponse.SC_NOT_MODIFIED /* 304 */) {
        Header locationHeader = proxyResponse.getLastHeader(HttpHeaders.LOCATION);
        if (locationHeader == null) {
            throw new ServletException("Received status code: " + statusCode + " but no " + HttpHeaders.LOCATION
                    + " header was found in the response");
        }
        // Modify the redirect to go to this proxy servlet rather that the proxied host
        String locStr = rewriteUrlFromResponse(servletRequest, locationHeader.getValue());

        servletResponse.sendRedirect(locStr);
        return true;
    }
    // 304 needs special handling. See:
    // http://www.ics.uci.edu/pub/ietf/http/rfc1945.html#Code304
    // We get a 304 whenever passed an 'If-Modified-Since'
    // header and the data on disk has not changed; server
    // responds w/ a 304 saying I'm not going to send the
    // body because the file has not changed.
    if (statusCode == HttpServletResponse.SC_NOT_MODIFIED) {
        servletResponse.setIntHeader(HttpHeaders.CONTENT_LENGTH, 0);
        servletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
        return true;
    }
    return false;
}
 
Example 3
Source File: ProxyServlet.java    From aem-solr-search with Apache License 2.0 5 votes vote down vote up
protected boolean doResponseRedirectOrNotModifiedLogic(
        HttpServletRequest servletRequest, HttpServletResponse servletResponse,
        HttpResponse proxyResponse, int statusCode)
        throws ServletException, IOException {
    // Check if the proxy response is a redirect
    // The following code is adapted from org.tigris.noodle.filters.CheckForRedirect
    if (statusCode >= HttpServletResponse.SC_MULTIPLE_CHOICES /* 300 */
            && statusCode < HttpServletResponse.SC_NOT_MODIFIED /* 304 */) {
        Header locationHeader = proxyResponse.getLastHeader(HttpHeaders.LOCATION);
        if (locationHeader == null) {
            throw new ServletException("Received status code: " + statusCode
                    + " but no " + HttpHeaders.LOCATION + " header was found in the response");
        }
        // Modify the redirect to go to this proxy servlet rather that the proxied host
        String locStr = rewriteUrlFromResponse(servletRequest, locationHeader.getValue());

        servletResponse.sendRedirect(locStr);
        return true;
    }
    // 304 needs special handling.  See:
    // http://www.ics.uci.edu/pub/ietf/http/rfc1945.html#Code304
    // We get a 304 whenever passed an 'If-Modified-Since'
    // header and the data on disk has not changed; server
    // responds w/ a 304 saying I'm not going to send the
    // body because the file has not changed.
    if (statusCode == HttpServletResponse.SC_NOT_MODIFIED) {
        servletResponse.setIntHeader(HttpHeaders.CONTENT_LENGTH, 0);
        servletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
        return true;
    }
    return false;
}
 
Example 4
Source File: Response.java    From onedev with MIT License 4 votes vote down vote up
/**
 * Sends a response with one of the 300 series redirection codes.
 *
 * @param code the redirect status code
 * @param location the location to send in {@code Location} headers
 * @throws IOException if unable to send the redirect
 */
public void sendRedirect(int code, String location) throws IOException
{
    if ((code < HttpServletResponse.SC_MULTIPLE_CHOICES) || (code >= HttpServletResponse.SC_BAD_REQUEST))
        throw new IllegalArgumentException("Not a 3xx redirect code");

    if (!isMutable())
        return;

    if (location == null)
        throw new IllegalArgumentException();

    /*
     *  The new http spec now allows to redirect to relative urls. So we comment
     *  out below section to avoid wrongly prepending http scheme to the url if
     *  OneDev running with http protocol is exposed to outside as https prococol
     *  via reverse proxy
     */
    
    /*
    if (!URIUtil.hasScheme(location))
    {
        StringBuilder buf = _channel.getRequest().getRootURL();
        if (location.startsWith("/"))
        {
            // absolute in context
            location = URIUtil.canonicalEncodedPath(location);
        }
        else
        {
            // relative to request
            String path = _channel.getRequest().getRequestURI();
            String parent = (path.endsWith("/")) ? path : URIUtil.parentPath(path);
            location = URIUtil.canonicalEncodedPath(URIUtil.addEncodedPaths(parent, location));
            if (location != null && !location.startsWith("/"))
                buf.append('/');
        }

        if (location == null)
            throw new IllegalStateException("path cannot be above root");
        buf.append(location);

        location = buf.toString();
    }
     */
    resetBuffer();
    setHeader(HttpHeader.LOCATION, location);
    setStatus(code);
    closeOutput();
}
 
Example 5
Source File: ServiceResponseWrapFilter.java    From ByteTCC with GNU Lesser General Public License v3.0 4 votes vote down vote up
protected boolean responseIsRedirected(HttpServletResponseImpl resp) {
	int statusCode = resp.getStatusCode();
	boolean redirected = statusCode >= HttpServletResponse.SC_MULTIPLE_CHOICES
			&& statusCode < HttpServletResponse.SC_BAD_REQUEST;
	return redirected || resp.isRdrctFlag();
}