es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar una petición POST a una API desde una página HTML (utilizando un botón enlazado a un código de JavaScript) cuando la API requiere un certificado y usuario/contraseña.

Quiero agregar un código JavaScript en una página HTML que permita a cualquier usuario con acceso a esa página web ejecutar las solicitudes POST disponibles a una API. Estas solicitudes POST funcionan bien en Postman, pero no estoy seguro de cómo puedo ejecutar este tipo de solicitudes utilizando JavaScript, ya que esta API requiere no solo un certificado (con una frase de contraseña), sino también un par adicional de credenciales (nombre de usuario y contraseña) que en Postman están configurados de una manera muy intuitiva en los menús correspondientes.

¿Alguien puede iluminarme sobre cómo puedo ejecutar estas solicitudes desde una página web utilizando JavaScript? ¿Quizás compartir algún código de ejemplo?

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hacer solicitudes POST en JavaScript, puedes usar el objeto XMLHttpRequest o la API fetch. Sin embargo, dado que tu API requiere un certificado y credenciales adicionales, es posible que necesites incluirlos en el encabezado de la solicitud. Aquí tienes un ejemplo de código que puedes modificar según tus necesidades:

    const url = "https://api.example.com/posts"; // reemplazar con el punto final de tu API
    const cert = "certificate.pem"; // reemplazar con el nombre o ruta de tu certificado
    const passphrase = "tu_contraseña"; // reemplazar con la frase de contraseña de tu certificado
    const username = "tu_nombre_de_usuario"; // reemplazar con tu nombre de usuario de la API
    const password = "tu_contraseña"; // reemplazar con tu contraseña de la API
    
    const xhr = new XMLHttpRequest();
    xhr.open("POST", url);
    xhr.setRequestHeader("Content-Type", "application/json"); // reemplazar con tus encabezados de solicitud
    
    // configura tu certificado y credenciales
    xhr.setRequestHeader("Certificate", `filename="${cert}",passphrase="${passphrase}"`);
    xhr.setRequestHeader("Authorization", `Basic ${btoa(`${username}:${password}`)}`); 
    
    // reemplazar con el cuerpo de tu solicitud
    const data = { 
      title: "Publicación de ejemplo",
      body: "Esta es una publicación de ejemplo.",
      userId: 1
    }
    
    xhr.send(JSON.stringify(data)); // envía la solicitud POST
    

    También puedes usar una biblioteca como Axios o Superagent para simplificar el envío de solicitudes y el manejo de respuestas. Recuerda manejar adecuadamente los errores y validar los datos de entrada para evitar vulnerabilidades de seguridad.

Comments are closed.