Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

584
Visualizações
¿Por qué mi pdf se carga utilizando una URL de AWS S3 prefirmada que no tiene el tipo de contenido correcto?

Uso AWS S3 con URL prefirmadas tanto para cargar ( putObject ) como para descargar ( getObject ).

Noté que las direcciones URL generadas para cargar archivos PDF se descargan en lugar de mostrarse en el destino _blank . Lo rastreé hasta el hecho de que mis objetos s3 tienen un campo de metadatos ContentType establecido en application/x-www-form-urlencoded en lugar de application/pdf como solicité. Funciona cuando cambio manualmente los metadatos del tipo de contenido en S3.

El código utilizado para generar la url putObject putObject es este:

 console.log("presigning with ", fileInput); /* Will print something like: presigning with [Object: null prototype] { name: 'myFile.pdf', mimetype: 'application/pdf', size: 321528 } */ const { name, size, mimetype } = fileInput const signedUrlExpireSeconds = 60 * 60 let data = {} const key = "articles/" + Date.now().toString() + ".pdf" let params = { Bucket: 'mybucket', Key: key, Expires: signedUrlExpireSeconds, ContentType: mimetype }; data.url = await uploadToS3(params)// what I will use to upload from the client browser export const uploadToS3 = (params) => { AWS.config.update({ accessKeyId: process.env.S3ACCESSKEYID, secretAccessKey: process.env.S3SECRETACCESSKEY, region: process.env.S3REGION }); var s3 = new AWS.S3(); return s3.getSignedUrlPromise('putObject', params); }

La URL generada contiene, de hecho, la opción de tipo de contenido de la siguiente manera (URL truncada):

 https://mybucket.s3.eu-west-3.amazonaws.com/articles/1582299553999.pdf?Content-Type=application%2Fpdf&X-Amz-Algorithm......

Sin embargo, cuando trato de mostrar mi pdf en una pestaña _blank , el navegador lo descarga debido al tipo de contenido defectuoso application/x-www-form-urlencoded establecido durante la carga de S3.

Supongo que la URL getObject getObject está bien, ya que funciona cuando actualizo manualmente en S3 el tipo de contenido del archivo.

¿Me estoy perdiendo algo con la carga?


ACTUALIZAR

Me preguntaba si tal vez estaba relacionado con la solicitud de venta de axios realizada sobre la base de la URL prefirmada. Según los comentarios de este problema , logré obtener el tipo de contenido adecuado.

Sin embargo, el pdf no se carga porque el favicon no está disponible... Hay 2 llamadas de red, una para el pdf que está bien con 304 y otra para un favicon que recibe una solicitud incorrecta de 400 en firefox, y un 403 prohibido en cromo. Como consecuencia (al parecer), el archivo pdf se considera inválido.

Hice que el archivo favico sea el único público, pero el PDF aún se considera inválido. Sin embargo, se muestra correctamente cuando se descarga.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Para referencia futura de todos, al enviar una solicitud de URL prefirmada, debe proporcionar el tipo de contenido en la solicitud, en axios o cualquiera que sea su cliente http. De lo contrario, se le dará esta application/x-www-form-urlencoded . Es por eso que cuando recupera con .getObject , ve el Content-Type establecido en application/x-www-form-urlencoded .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda