private static void addResponseFieldIfConfigured( Request request, HttpField field ) { if ( field != null ) { request.getResponse().getHttpFields().add( field ); } }
@Override public String getFirst(String key) { return this.headers.get(key); }
public static void setCaching(final HttpServletResponse response, final int expiresSeconds) { if (response instanceof org.eclipse.jetty.server.Response) { org.eclipse.jetty.server.Response r = (org.eclipse.jetty.server.Response) response; HttpFields fields = r.getHttpFields(); fields.remove(HttpHeader.LAST_MODIFIED); // if this field is present, the reload-time is a 10% fraction of ttl and other caching headers do not work fields.put(HttpHeader.CACHE_CONTROL, "public, no-store, max-age=" + Integer.toString(expiresSeconds)); // seconds fields.put(HttpHeader.CACHE_CONTROL, "public, max-age=" + Integer.toString(expiresSeconds)); // seconds response.setHeader(HttpHeader.LAST_MODIFIED.asString(), ""); // not really the best wqy to remove this header but there is no other option if(expiresSeconds == 0){ response.setHeader(HttpHeader.CACHE_CONTROL.asString(), "public, no-store, max-age=" + Integer.toString(expiresSeconds)); response.setHeader(HttpHeader.CACHE_CONTROL.asString(), "public, max-age=" + Integer.toString(expiresSeconds));
@Override public List<String> setValue(List<String> value) { List<String> previousValues = headers.getValuesList(this.key); headers.put(this.key, value); return previousValues; } }
private static HttpHeaders toHttpHeaders(HttpFields httpFields) { HttpHeaders responseHeaders = new HttpHeaders(); Enumeration<String> names = httpFields.getFieldNames(); while (names.hasMoreElements()) { String name = names.nextElement(); Enumeration<String> values = httpFields.getValues(name); while (values.hasMoreElements()) { String value = values.nextElement(); responseHeaders.add(name, value); } } return responseHeaders; }
private static Map<String, String> writeOutBoundHeaders(final MultivaluedMap<String, Object> headers, final Request request) { final Map<String, String> stringHeaders = HeaderUtils.asStringHeadersSingleValue(headers); // remove User-agent header set by Jetty; Jersey already sets this in its request (incl. Jetty version) request.getHeaders().remove(HttpHeader.USER_AGENT); for (final Map.Entry<String, String> e : stringHeaders.entrySet()) { request.getHeaders().add(e.getKey(), e.getValue()); } return stringHeaders; }
if (!HttpMethod.GET.is(method) && !HttpMethod.POST.is(method) && !HttpMethod.HEAD.is(method)) baseRequest.setHandled(true); return; return; LOG.warn("No error page "+error_page); LOG.warn(Log.EXCEPTION, e); return; if (LOG.isDebugEnabled()) LOG.debug("No Error Page mapping for request({} {}) (using default)",request.getMethod(),request.getRequestURI()); baseRequest.setHandled(true); HttpField accept = baseRequest.getHttpFields().getField(HttpHeader.ACCEPT); if (accept == null || accept.contains("text/html") || accept.contains("*/*")) response.setHeader(HttpHeader.CACHE_CONTROL.asString(), _cacheControl); ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(4096); String reason = (response instanceof Response) ? ((Response) response).getReason() : null; handleErrorPage(request, writer, response.getStatus(), reason); writer.flush();
protected void handleOptions(Request request,Response response) throws IOException { if (!HttpMethod.OPTIONS.is(request.getMethod())) response.sendError(HttpStatus.BAD_REQUEST_400); request.setHandled(true); response.setStatus(200); response.getHttpFields().put(HttpHeader.ALLOW,"GET,POST,HEAD,OPTIONS"); response.setContentLength(0); response.complete(); }
if (LOG.isDebugEnabled()) LOG.debug("upgrade {} {}",this,_upgrade); if (_upgrade!=PREAMBLE_UPGRADE_H2C && (_connection==null || !_connection.contains("upgrade"))) throw new BadMessageException(HttpStatus.BAD_REQUEST_400); if (f.getProtocols().contains(_upgrade.getValue())) if (LOG.isDebugEnabled()) LOG.debug("No factory for {} in {}",_upgrade,getConnector()); return false; HttpFields response101 = new HttpFields(); Connection upgrade_connection = factory.upgradeConnection(getConnector(),getEndPoint(),_metadata,response101); if (upgrade_connection==null) if (LOG.isDebugEnabled()) LOG.debug("Upgrade from {} to {}", getEndPoint().getConnection(),upgrade_connection); getRequest().setAttribute(HttpConnection.UPGRADE_CONNECTION_ATTRIBUTE,upgrade_connection); getResponse().setStatus(101); getHttpTransport().onCompleted(); return true;
HttpFields fields = new HttpFields(); ResponseInfo info = new ResponseInfo(_request.getHttpVersion(), fields, 0, HttpStatus.INTERNAL_SERVER_ERROR_500, null, _request.isHead()); boolean committed = commitResponse(info, null, true); if (!committed) LOG.warn("Could not send response error 500: "+x); LOG.warn("Could not send response error 500: "+x); _request.setAttribute(RequestDispatcher.ERROR_EXCEPTION,x); _request.setAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE,x.getClass()); _response.sendError(500, x.getMessage()); LOG.debug("Could not commit response error 500", e);
_request.setAttribute(RequestDispatcher.ERROR_EXCEPTION,x); _request.setAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE,x.getClass()); if (_state.isSuspended()) HttpFields fields = new HttpFields(); fields.add(HttpHeader.CONNECTION,HttpHeaderValue.CLOSE); ResponseInfo info = new ResponseInfo(_request.getHttpVersion(), fields, 0, HttpStatus.INTERNAL_SERVER_ERROR_500, null, _request.isHead()); boolean committed = sendResponse(info, null, true); if (!committed) LOG.warn("Could not send response error 500: "+x); _request.getAsyncContext().complete(); LOG.warn("Could not send response error 500: "+x); _response.setHeader(HttpHeader.CONNECTION.asString(),HttpHeaderValue.CLOSE.asString()); _response.sendError(500, x.getMessage()); LOG.debug("Could not commit response error 500", e);
public PushBuilderImpl(Request request, HttpFields fields, String method, String queryString, String sessionId, boolean conditional) { super(); _request = request; _fields = fields; _method = method; _queryString = queryString; _sessionId = sessionId; _conditional = conditional; _fields.add(JettyPush); if (LOG.isDebugEnabled()) LOG.debug("PushBuilder({} {}?{} s={} c={})",_method,_request.getRequestURI(),_queryString,_sessionId,_conditional); }
if (!fields.contains(HttpHeader.HOST)) String authority = request.getURI().getAuthority(); if (authority != null) fields.put("host", authority); _expect100Continue = fields.contains(HttpHeader.EXPECT, HttpHeaderValue.CONTINUE.asString()); HttpFields response = getResponse().getHttpFields(); if (getHttpConfiguration().getSendServerVersion()) response.add(SERVER_VERSION); if (getHttpConfiguration().getSendXPoweredBy()) response.add(POWERED_BY); !endStream && !_expect100Continue; if (LOG.isDebugEnabled()) LOG.debug("HTTP2 Request #{}/{}, delayed={}:{}{} {} {}{}{}", stream.getId(), Integer.toHexString(stream.getSession().hashCode()), _delayedUntilContent, System.lineSeparator(),
public void onRequest(MetaData.Request request) { _requests.incrementAndGet(); _request.setTimeStamp(System.currentTimeMillis()); HttpFields fields = _response.getHttpFields(); if (_configuration.getSendDateHeader() && !fields.contains(HttpHeader.DATE)) fields.put(_connector.getServer().getDateField()); long idleTO=_configuration.getIdleTimeout(); _oldIdleTimeout=getIdleTimeout(); if (idleTO>=0 && _oldIdleTimeout!=idleTO) setIdleTimeout(idleTO); request.setTrailerSupplier(_trailerSupplier); _request.setMetaData(request); _request.setSecure(HttpScheme.HTTPS.is(request.getURI().getScheme())); notifyRequestBegin(_request); if (LOG.isDebugEnabled()) LOG.debug("REQUEST for {} on {}{}{} {} {}{}{}",request.getURIString(),this,System.lineSeparator(), request.getMethod(),request.getURIString(),request.getHttpVersion(),System.lineSeparator(), request.getFields()); }
@Override public Deflater getDeflater(Request request, long content_length) String ua = request.getHttpFields().get(HttpHeader.USER_AGENT); if (ua!=null && !isAgentGzipable(ua)) LOG.debug("{} excluded user agent {}",this,request); return null; LOG.debug("{} excluded minGzipSize {}",this,request); return null; HttpField accept = request.getHttpFields().getField(HttpHeader.ACCEPT_ENCODING); LOG.debug("{} excluded !accept {}",this,request); return null; boolean gzip = accept.contains("gzip");
@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { baseRequest.setHandled(true); if(method.name().equals(request.getMethod())) { if(this.expectedContentType.isEmpty()) { Assert.assertNull(request.getHeader("Content-Type")); } else { assertEquals(this.expectedContentType,request.getHeader("Content-Type")); } final String body = request.getReader().readLine(); this.trackedHeaderValue = baseRequest.getHttpFields().get(headerToTrack); if(this.expectedContentType.isEmpty()) { Assert.assertNull(body); } else { assertEquals("Hello", body); } } else { response.setStatus(404); response.setContentType("text/plain"); response.setContentLength(0); } }
HttpField host = metadata==null?null:metadata.getFields().getField(HttpHeader.HOST); if (host!=null) if (!(host instanceof HostPortHttpField) && host.getValue()!=null && !host.getValue().isEmpty()) host=new HostPortHttpField(host.getValue()); if (host instanceof HostPortHttpField) metadata.getURI().setAuthority(authority.getHost(),authority.getPort()); return authority.getHost(); String name=getLocalName(); if (name != null) return name; LOG.ignore(e);
@Override public void badMessage(int status, String reason) { if (status < 400 || status > 599) status = HttpStatus.BAD_REQUEST_400; try { if (_state.handling()) { commitResponse(new ResponseInfo(HttpVersion.HTTP_1_1,new HttpFields(),0,status,reason,false),null,true); _state.unhandle(); } } catch (IOException e) { LOG.warn(e); } finally { _state.completed(); } }
public AbstractHttpConnection(Connector connector, EndPoint endpoint, Server server) { super(endpoint); _uri = StringUtil.__UTF8.equals(URIUtil.__CHARSET)?new HttpURI():new EncodedHttpURI(URIUtil.__CHARSET); _connector = connector; HttpBuffers ab = (HttpBuffers)_connector; _parser = newHttpParser(ab.getRequestBuffers(), endpoint, new RequestHandler()); _requestFields = new HttpFields(); _responseFields = new HttpFields(); _request = new Request(this); _response = new Response(this); _generator = newHttpGenerator(ab.getResponseBuffers(), endpoint); _generator.setSendServerVersion(server.getSendServerVersion()); _server = server; }
@Override public void addIntHeader(String name, int value) { if (!isIncluding()) { _fields.add(name, Integer.toString(value)); if (HttpHeader.CONTENT_LENGTH.is(name)) _contentLength = value; } }