Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

112
Vistas
Use express sendFile para solicitudes HEAD

sendFile es para enviar archivos y también determina algunos encabezados interesantes del archivo (como la longitud del contenido). Para una solicitud HEAD , idealmente querría exactamente los mismos encabezados, pero solo omitiría el cuerpo.

No parece haber una opción para esto en la API. ¿Tal vez pueda anular algo en el objeto de respuesta para evitar que envíe algo?

Esto es lo que obtuve:

 res.sendFile(file, { headers: hdrs, lastModified: false, etag: false })

¿Alguien ha solucionado esto?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Como ya escribió Robert Klep, sendFile ya tiene el comportamiento requerido de enviar los encabezados y no enviar el cuerpo si el método de solicitud es HEAD.

Además de eso, Express ya maneja solicitudes HEAD para rutas que tienen controladores GET definidos. Por lo tanto, ni siquiera necesita definir explícitamente ningún controlador HEAD.

Ejemplo:

 let app = require('express')(); let file = __filename; let hdrs = {'X-Custom-Header': '123'}; app.get('/file', (req, res) => { res.sendFile(file, { headers: hdrs, lastModified: false, etag: false }); }); app.listen(3322, () => console.log('Listening on 3322'));

Esto envía su propio código fuente en GET /file como se puede demostrar con:

 $ curl -v -X GET localhost:3322/file * Hostname was NOT found in DNS cache * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 3322 (#0) > GET /file HTTP/1.1 > User-Agent: curl/7.35.0 > Host: localhost:3322 > Accept: */* > < HTTP/1.1 200 OK < X-Powered-By: Express < X-Custom-Header: 123 < Accept-Ranges: bytes < Cache-Control: public, max-age=0 < Content-Type: application/javascript < Content-Length: 267 < Date: Tue, 11 Apr 2017 10:45:36 GMT < Connection: keep-alive < [...]

El [...] es el cuerpo que no fue incluido aquí. Sin agregar ningún controlador nuevo, esto también funcionará:

 $ curl -v -X HEAD localhost:3322/file * Hostname was NOT found in DNS cache * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 3322 (#0) > HEAD /file HTTP/1.1 > User-Agent: curl/7.35.0 > Host: localhost:3322 > Accept: */* > < HTTP/1.1 200 OK < X-Powered-By: Express < X-Custom-Header: 123 < Accept-Ranges: bytes < Cache-Control: public, max-age=0 < Content-Type: application/javascript < Content-Length: 267 < Date: Tue, 11 Apr 2017 10:46:29 GMT < Connection: keep-alive <

Este es el mismo pero sin cuerpo.

about 4 years ago · Santiago Trujillo Denunciar

0

Express usa send para implementar sendFile , que ya hace exactamente lo que usted quiere .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda