Tengo un pequeño código JavaScript que obtiene un archivo PHP, devuelve un PDF y tengo que enviar ese PDF en una secuencia al usuario.
const guestForm = document.getElementById("guest-form"); guestForm.addEventListener("submit", (e) => { e.preventDefault(); // Set button to loading mode const submitButton = document.getElementById("submit-button"); submitButton.innerHTML = "LOADING..."; submitButton.disabled = true; const firstName = document .getElementById("guest-form-first-name") .value.toUpperCase(); const lastName = document .getElementById("guest-form-last-name") .value.toUpperCase(); const email = document.getElementById("guest-form-email").value; fetch("/services/printInvitation.php", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ firstName, lastName, email, }), }) .then((response) => response.blob()) .then((blob) => { blob.type = "application/pdf"; const file = new File([blob], "document.pdf", { type: "application/pdf", }); const objectUrl = URL.createObjectURL(file, { type: "application/pdf", }); submitButton.innerHTML = "ENTER"; submitButton.disabled = false; window.location.href = objectUrl; }); });
El problema es que en los navegadores web basados en Chrome (Google Chrome, Brave Browser, Microsoft Edge, etc.), cuando el usuario intenta descargar el archivo PDF, muestra "Error: error de red". Como puede ver, ya declaré el tipo MIME muchas veces en el código, pero sigue fallando.
¿Qué estoy haciendo mal?