qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer Encabezados, Métodos y Códigos HTTP tyuiopasdfghjklzxcvbnmqwertyuiopas Web Application Development dfghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghj klzxcvbnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc 7CM5 Ortiz Ramírez Diana Encabezados, Métodos y Códigos HTTP Encabezados y métodos de Solicitud Http Encabezado Significado Accept Accept-Charset Accept-Encoding Accept-Language Authorization Connection Content- Encoding Content- Language Content- Length Content- Type Cookie Ortiz Ramírez Diana Listado de tipos MIME que el cliente soporta. Hay otros encabezados relacionados como Accept-Charset , Accept-Encoding , AcceptLanguage . El conjunto de caracteres que espera el navegador. Los tipos de codificación de datos (como gzip) para que el navegador sepa como decoficarlos. Los servlets pueden chequear explícitamente el soporte para gzip y devolver páginas HTML comprimidas con gzip para navegadores que las soportan, seleccionando la cabecera de respuesta Content-Encoding para indicar que están comprimidas con gzip. En muchos casos, esto puede reducir el tiempo de descarga por un factor de cinco o diez. El idioma que está esperando el navegador, en el caso de que el servidor tenga versiones en más de un idioma. Indica las credenciales de acceso a un recurso que presenta el usuario. Información de autorización, usualmente en respuesta a una cabecera WWW-Authenticate desde el servidor. ¿Usamos conexiones persistentes? Sí un servlet obtiene un valor Keep-Alive aquí, u obtiene una línea de petición indicando HTTP 1.1 (donde las conexiones persistentes son por defecto), podría ser posible tomar ventaja de las conexiones persisentes, ahorrando un tiempo significante para las páginas Web que incluyen muchas piezas pequeñas (imágenes o clases de applets). Para hacer esto, necesita envíar una cabecera Content-Length en la respuesta, que es fácimente conseguido escribiendo en un ByteArrayOutputStream, y preguntando por el tamaño antes de escribir la salida. Tipo de codificación para el cuerpo de la solicitud Content Tipo de idioma en el cuerpo de la solicitud Extensión del cuerpo de la solicitud. Para mensajes POST, cúantos datos se han añadido. Tipo de contenido del cuerpo de la solicitud (por ejemplo, texto/html). Esta cabecera devuelve las cookies a los Página 2 Encabezados, Métodos y Códigos HTTP Date Expect Forwarded From Host If-Match If-Modified-Since If-Unmodified-Since Link Max-Forwards Orig-URL Pragma Proxy-Authoritation Range Referer TE User-Agent Ortiz Ramírez Diana servidores que anteriormente le envía al navegador. Fecha en que comienza la transferencia de datos. Indica que comportamiento del servidor necesita el cliente. Utilizado por equipos intermediarios entre el navegador y el servidor. Dirección de correo que controla el cliente (navegador). Permite especificar que debe enviarse el documento si ha sido modificado desde una fecha en particular. Nombre o IP del host desde donde se conecta el cliente. Un cliente que tiene recursos en cache puede verificar si están actualizados incluyendo este encabezado. Hay otros encabezados que también tienen que ver con la caché. IfModified-Since , If-None-Match , If-Range , IfUnmodified-Since . Esta cabecera indica que el cliente quiere que la página sólo si se ha cambiado después de la fecha especificada. El servidor envía un código, 304, que no sea modificado de cabecera si no hay resultado más reciente disponible. Esta cabecera es el reverso de If-Modified-Ya, se especifica que la operación debe tener éxito sólo si el documento es anterior a la fecha especificada. Vínculo entre dos direcciones URL. Cuantas veces la petición del cliente puede ser reenviada por proxys. Dirección URL donde se originó la solicitud. El valor no-cache indica que el servidor debería devolver un documento nuevo, incluso si es un proxy con una copia local. Indica las credenciales de acceso a un proxy que presenta el usuario. Indica que porción de recurso (rango de bytes) recuperar. Es el URI del recurso desde donde la petición se ha realizado (generalmente por provenir de un enlace HTML). Que codificaciones de transferencia está dispuesto a recibir el cliente. Información sobre el agente de usuario (generalmente navegador) que origina la petición. Página 3 Encabezados, Métodos y Códigos HTTP UA-Pixels, UA-Color, UA-OS, UA-CPU S.N. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Cabeceras no estándard envíadas por algunas versiones de Internet Explorer, indicando el tamaño de la pantalla, la profundidad del color, el sistema operativo, y el tipo de CPU usada por el sistema del navegador Método & Descripción Cookie[] getCookies() Devuelve una matriz que contiene todos los objetos Cookie del cliente enviado a esta solicitud Enumeration getAttributeNames() Devuelve una enumeración con los nombres de los atributos disponibles para esta solicitud. Enumeration getHeaderNames() Devuelve una enumeración de todos los nombres de encabezado de la solicitud contiene. Enumeration getParameterNames() Devuelve una enumeración de objetos String con los nombres de los parámetros contenidos en esta solicitud. HttpSession getSession() Devuelve el actual período de sesiones asociada a esta solicitud, o si la solicitud no tiene un período de sesiones, crea una. HttpSession getSession(boolean create) Devuelve la HttpSession actual asociado con esta solicitud o, si, si no hay ninguna sesión actual y crear es cierto, devuelve un nuevo período de sesiones. Locale getLocale() Devuelve el Locale preferido que el cliente acepta el contenido , sobre la base de la cabecera Accept-Language. Object getAttribute(String name) Devuelve el valor del atributo con el nombre como un objeto, o null si ningún atributo del nombre dado existe. ServletInputStream getInputStream() Recupera el cuerpo de la petición, los datos binarios mediante un ServletInputStream. String getAuthType() Devuelve el nombre del esquema de autenticación que se utiliza para proteger el servlet, por ejemplo, "Basic" o "SSL", o nulo si la JSP no estaba protegido. String getCharacterEncoding() Devuelve el nombre de la codificación de caracteres usada en el cuerpo de esta solicitud. String getContentType() Devuelve el tipo MIME del cuerpo de la solicitud, o null si el tipo no se conoce. String getContextPath() Devuelve la parte de la URI de la solicitud que indica el contexto de la solicitud. String getHeader(String name) Devuelve el valor del encabezado de la solicitud se especifica como una cadena. String getMethod() Devuelve el nombre del método HTTP con el que se hizo esta solicitud, por ejemplo, GET, POST, o PUT. String getParameter(String name) Devuelve el valor de un parámetro de la petición como una cadena, o null si el parámetro no existe. String getPathInfo() Devuelve información de la ruta adicional asociado con la dirección URL que el cliente envía cuando se hizo esta petición. Ortiz Ramírez Diana Página 4 Encabezados, Métodos y Códigos HTTP 18 19 20 21 22 23 24 25 26 27 28 29 30 String getProtocol() Devuelve el nombre y versión del protocolo de la solicitud. String getQueryString() Devuelve la cadena de consulta que se encuentra en la URL de la petición después de la ruta. String getRemoteAddr() Devuelve el protocolo de Internet (IP) del cliente que envió la solicitud. String getRemoteHost() Devuelve el nombre completo del cliente que envió la solicitud. String getRemoteUser() Devuelve el inicio de sesión del usuario que realiza esta solicitud, si el usuario ha sido autenticado, o null si el usuario no se ha autenticado. String getRequestURI() Devuelve la parte de la URL de esta petición desde el nombre del protocolo hasta la cadena de consulta en la primera línea de la petición HTTP. String getRequestedSessionId() Devuelve el identificador de sesión especificado por el cliente. String getServletPath() Devuelve la parte de la URL de esta petición de que llama a la JSP. String[] getParameterValues(String name) Devuelve una matriz de objetos String que contienen todos los valores del parámetro de la petición dado tiene, o null si el parámetro no existe. boolean isSecure() Devuelve un booleano que indica si esta solicitud se realizó mediante un canal seguro, como HTTPS.. int getContentLength() Devuelve la longitud, en bytes, del cuerpo de la petición y puesto a disposición por el flujo de entrada, o -1 si la duración no se conoce. int getIntHeader(String name) Devuelve el valor de la cabecera de la petición especifica como un entero. int getServerPort() Devuelve el número de puerto en el que se recibió esta solicitud. Ortiz Ramírez Diana Página 5 Encabezados, Métodos y Códigos HTTP Encabezados y métodos de Respuesta Http Encabezado Allow Content-Encoding Content-Language Content-Length Content-Type Content-Type Date Expires Forwarded Location Last-Modified Refresh Server Set-Cookie WWW-Authenticate Ortiz Ramírez Diana Significado Especifica los tipos MIME. Informa al cliente de los métodos válidos asociados con el recurso. Tipo de codificación para el cuerpo de la respuesta. Tipo de idioma en el cuerpo de la respuesta. Extensión del cuerpo de la respuesta. Indica el tipo MIME de los contenidos. Hay otros encabezados muy relacionados como Content-Language , Content-Length , ContentLocation , Content-MD5 , Content-Range o Content-Encoding . Tipo de contenido del cuerpo de la respuesta (por ejemplo, texto/html). Fecha en que comienza la transferencia de datos. Indica la fecha y hora en la que el recurso se considerará obsoleto. Utilizado por equipos intermediarios entre el navegador y el servidor. Redireccionamiento a una nueva dirección URL asociada con el documento. Indica la fecha y hora en la que el recurso original fue modificado por última vez. Esta cabecera significa “Recarga esta página o ve a URL especificada en n segundos". No significa "recarga esta página o ve la URL especificada cada n segundos". Por eso tenemos que enviar una cabecera Refresh cada vez. Nota: esta cabecera no forma parte oficial del HTTP 1.1, pero es una extensión soportada por Netspace e Internet Explorer Características del servidor que envió la respuesta Especifica una Cookie asociada con la página. Los servlets no deberían usar response.setHeader("Set-Cookie", ...), pero en su lugar usan el método de propósito especial addCookie de HttpServletResponse. ¿Qué tipo de autorización y domino debería suministrar el cliente en su cabecera Authorization? Esta cabecera es necesaria en respuestas que tienen una línea de estado 401 (Unauthorized). Por ejemplo response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\""). Página 6 Encabezados, Métodos y Códigos HTTP S.N. Método y Descripción 1 String encodeRedirectURL(String url) Codifica la dirección URL especificada para su uso en el método sendRedirect o, si la codificación no es necesaria, devuelve la dirección URL sin cambios. 2 String encodeURL(String url) Codifica la dirección URL especificada mediante la inclusión del identificador de sesión en él, o, si la codificación no es necesaria, devuelve la dirección URL sin cambios. 3 boolean containsHeader(String name) Devuelve un booleano que indica si el nombre de la cabecera de la respuesta ya se ha establecido. 4 boolean isCommitted() Devuelve una indicación booleana si la respuesta ha sido cometida. 5 void addCookie(Cookie cookie) Añade la cookie especificada a la respuesta. 6 void addDateHeader(String name, long date) Agrega un encabezado de respuesta con el nombre y la fecha de valor. 7 void addHeader(String name, String value) Agrega un encabezado de respuesta con el nombre y valor. 8 void addIntHeader(String name, int value) Agrega un encabezado de respuesta con el nombre dado y el valor entero. 9 void flushBuffer() Fuerza cualquier contenido en el buffer a ser escrito al cliente. 10 void reset() Borra cualquier dato que existe en la memoria intermedia, así como el código de estado y cabeceras. 11 void resetBuffer() Borra el contenido de la memoria intermedia subyacente en la respuesta sin borrar encabezados o código de estado. 12 void sendError(int sc) Envía una respuesta de error al cliente utilizando el código de estado especificado y limpieza de la memoria intermedia. 13 void sendError(int sc, String msg) Envía una respuesta de error al cliente con el estado especificado 14 void sendRedirect(String location) Envía una redirección temporal de respuesta al cliente mediante la dirección URL redirigir ubicación especificada. 15 void setBufferSize(int size) Sets the preferred buffer size for the body of the response. Establece el tamaño del buffer preferido para el cuerpo de la respuesta. 16 void setCharacterEncoding(String charset) Establece la codificación de caracteres (MIME charset) de la respuesta que se envía al cliente, por ejemplo, a UTF-8. 17 void setContentLength(int len) Establece la longitud del cuerpo en el contenido de la respuesta. En los servlets HTTP, este método establece el protocolo HTTP Content-Length header. 18 void setContentType(String type) Ortiz Ramírez Diana Página 7 Encabezados, Métodos y Códigos HTTP 19 20 21 22 23 Establece el tipo de contenido de la respuesta que se envía al cliente, si la respuesta no se ha confirmado todavía. void setDateHeader(String name, long date) Establece una cabecera de respuesta con el nombre y la fecha de valor. void setHeader(String name, String value) Establece una cabecera de respuesta con el nombre dado y el valor. void setIntHeader(String name, int value) Establece una cabecera de respuesta con el nombre dado y el valor entero. void setLocale(Locale loc) Establece la configuración local de la respuesta, si la respuesta no se ha confirmado todavía. void setStatus(int sc) Establece el código de estado para esta respuesta. Códigos Http Aquí hay una lista de todas los códigos de estado disponibles en HTTP 1.1 junto con sus mensajes asociados y su interpretación. Deberíamos ser cuidadosos al utilizar los códigos de estado que están disponibles sólo en HTTP 1.1, ya que muchos navegadores sólo soportan HTTP 1.0. Si tenemos que usar códigos de estado específicos para HTTP 1.1, en la mayoría de los casos querremos chequear explícitamente la versión HTTP de la petición (mediante el método getProtocol de HttpServletRequest) o reservarlo para situaciones donde no importe el significado de la cabecera HTTP 1.0. Códigos 1xx 100 Continue Mediante este código, el servidor informa al cliente de que éste puede continuar con su solicitud. El cliente (el navegador, normalmente) tiene dos opciones: enviar las cabeceras que aún no haya enviado o, si ya había completado la solicitud, ignorar el código 100 y esperar. 101 Switching Protocols El servidor indica con este código que acepta un cambio en el protocolo de comunicación con el cliente. El cambio se producirá inmediatamente después de servir este código. Códigos 2xx Códigos relacionados con solicitudes resueltas con éxito. 200 OK El documento se ha servido correctamente. Ortiz Ramírez Diana Página 8 Encabezados, Métodos y Códigos HTTP 201 Created Como respuesta a una solicitud aceptada por el servidor, éste crea un nuevo recurso, que se servirá al cliente inmediatamente. 202 Accepted Igual que se ha explicado para el código 201, el servidor debe crear un recurso para atender la solicitud, pero mediante un código 202 el servidor indica que no se compromete a servir el recurso inmediatamente. 203 Non-Authoritative Information Se utiliza muy poco. Con este código, el servidor indica al cliente que al servir el recurso solicitado está alterando la metainformación original de dicho recurso. Por ejemplo: un servidor responde a una solicitud con un documento en HTML que incluye el texto íntegro del BOE de una fecha determinada, añadiendo metainformación adicional que no se incluye en el BOE original, como el tamaño del documento expresado en número total de caracteres. 204 No Content El servidor ha recibido y aceptado la solicitud, pero entiende que no es preciso servir ningún documento como respuesta. 205 Reset Content Como respuesta a una solicitud, el servidor le indica al cliente, normalmente al navegador, que debe recargar el mismo documento que originó la solicitud (por ejemplo, "limpiar" los campos de un formulario) 206 Partial Content Respuesta del servidor a una solicitud parcial de documento. El navegador, previamente, había solicitado una parte de un recurso, solicitud ésta que el servidor ha podido atender correctamente. Un ejemplo: el navegador puede solicitar sólo una página de un documento PDF; de ser aceptada y correctamente atendida esta solicitud, el servidor contestaría con un código 206. Códigos 3xx Códigos utilizados para informar al navegador de que el documento solicitado existe, pero no se le va a servir desde la dirección indicada en la solicitud. 300 Multiple Choices Ortiz Ramírez Diana Página 9 Encabezados, Métodos y Códigos HTTP El recurso solicitado se corresponde con algundo de entre una lista de recursos alternativos. Ha de ser el propio agente de usuario (navegador, normalmente) quien elija entre los diferentes recursos. 301 Moved Permanently La URI (dirección relativa) del recurso ya no es la indicada al cursar la solicitud. El servidor ofrece al cliente la nueva dirección (mediante la cabecera "Location"), para que el cliente pueda realizar una nueva solicitud de documento. 302 Found El recurso solicitado ha cambiado provisionalmente de localización (URI). El servidor, como se ha explicado para el código 301, ofrece al cliente la nueva localización. Normalmente, el navegador no debería redirigirse hacia la nueva URI sin una confirmación previa por parte del usuario. 303 See Other Tiene un sentido similar al código 302. De hecho, la versión 1.0. del protocolo HTTP no contemplaba el código 303. Indica que la respuesta a la solicitud se puede encontrar en una localización diferente, y es accesible mediante el método GET. La nueva localización no se debe considerar un substituto de la URI solicitada por el cliente. 304 Not Modified El servidor entiende que existe una copia en caché, e informa de que el documento no ha cambiado: sigue siendo el mismo que el guardado en la memoria caché. Si no es así, ha de ser la caché la que realice una nueva solicitud no condicionada, es decir, que el servidor debe atender sin considerar si existe o no una copia en caché del documento. 305 Use Proxy El servidor informa de que se debe acceder al documento en cuestión utilizando un proxy, y facilita la URI del proxy. 306 El código 306 existió en anteriores versiones, pero ahora está libre para futuras especificaciones. 307 Temporary Redirect El documento se encuentra en otra URI, facilitada por la cabecera "Location". Ortiz Ramírez Diana Página 10 Encabezados, Métodos y Códigos HTTP Códigos 4xx Códigos relacionados con solicitudes relativas a documentos inexistentes o de acceso problemático o restringido. 400 Bad Request La sintaxis de la solicitud es incorrecta. 401 Unauthorized El acceso al recurso requiere identificación por parte del usuario. 402 Payment Required De momento, este código no está suficientemente desarrollado. Se espera que lo esté en el futuro. 403 Forbidden El servidor rechaza la solicitud, sin ni siquiera ofrecer la posibilidad de que el usuario se identifique. 404 Not Found La sintaxis de la solicitud es correcta, pero el servidor no encuentra ningún recurso cuya URI se corresponda con la de la solicitud. 405 Method Not Allowed La solicitud se ha hecho empleando un método (GET, POST, HEAD...) que no está permitido. 406 Not Acceptable El recurso no cumple las restricciones expresadas por la solicitud. Por ejemplo, se ha solicitado un documento de texto plano con una URI determinada y el servidor, aunque encuentra un documento con esa URI, no lo sirve por no cumnlir con el requisito de ser de texto plano. 407 Proxy Authentication Required Es parecido al código 401, pero la autentificación del cliente se debe realizar mediante un proxy. Ortiz Ramírez Diana Página 11 Encabezados, Métodos y Códigos HTTP 408 Request Timeout El cliente ha tardado en realizar la solicitud más tiempo del que el servidor puede esperar. 409 Conflict El servidor entiende que existe algún conflicto entre la naturaleza del recurso solicitado y el tipo de solicitud que ha cursado el cliente. Normalmente, el servidor debería ofrecer al cliente información suficiente para resolver el conflicto. 410 Gone El recurso ya no está disponible, y no se espera que lo vuelva a estar en el futuro. 411 Length Required El servidor no está dispuesto a servir el recurso si el cliente no especifica en su solicitud una cabecera del tipo "Content-Length" que indique cuál es la longitud del mensaje de solicitud. 412 Precondition Failed No se ha cumplido alguna de las condiciones expresadas en las cabeceras de la solicitud cursada por el cliente. 413 Request Entitiy Too Large El mensaje de solicitud cursado por el cliente es excesivamente largo. 414 Request URI Too Long La URI (cadena de caracteres que expresa la localización del documento) es demasiado larga. Se puede producir cuando el cliente convierte por error un acceso del tipo POST en uno del tipo GET o cuando se entra en ciertos bucles de redirecciones. 415 Unsupported Media Type El servidor rechaza la solicitud por incompatibilidad entre el método y el formato solicitado y los propios del recurso. 416 Requested Range Not Satisfable El servidor no ha podido resolver satisfactoriamente la cabecera "Range" de la solicitud del cliente. La respuesta del servidor debería incluir una cabecera "Content-Range" especificando el tamaño actual del recurso solicitado. Ortiz Ramírez Diana Página 12 Encabezados, Métodos y Códigos HTTP 417 Expectation Failed El valor dado por la cabecera "Expect" de la solicitud no ha podido ser resuelto por el servidor. Códigos 5xx Códigos relacionados con errores producidos en el servidor o en los servidores implicados en dar respuesta a la solicitud de documento realizada por el cliente. 500 Internal Server Error Se ha producido un fallo en el servidor, que no ha podido resolver la solicitud. 501 Not Implemented El servidor no implementa alguna funcionalidad necesaria para resolver la solicitud, por ejemplo, porque no reconoce el método empleado. 502 Bad Gateway Un servidor que hace de proxy o gateway no ha obtenido una respuesta adecuada de un segundo servidor, al cual necesita acceder para atender la solicitud del cliente. 503 Service Unavailable El servidor no puede atender la solicitud debido, por ejemplo, a una sobrecarga o a tareas de mantenimiento que obligan a deshabilitar el servicio. Es preceptivo acompañar este código de una cabecera del tipo Retry-After (Reintentar-Después), que especifique el tiempo estimado de "caída" del servicio. Si no se especifica, el servidor no debería enviar este código, sino un código 500. 504 Gateway Timeout El servidor, que hace las funciones de proxy o gateway, no ha obtenido ninguna respuesta de un segundo servidor, al cual, como en el caso explicado para el código 502, necesita acceder. 505 HTTP Version Not Supported Mediante este código, el servidor informa al cliente de que no está preparado para utilizar la versión del protocolo HTTP que el cliente ha utilizado para lanzar la petición. Ortiz Ramírez Diana Página 13