Estoy tratando de implementar una clase de envío de solicitud de administrador en node.js. Hay dos llamadas a la API, una es Iniciar sesión y la segunda es Solicitar acceso (Ambos son formularios). Me las arreglé para crear estas dos llamadas API en Postman, sin embargo, tengo problemas para obtener el mismo comportamiento en node.js. Probablemente porque las cookies no se pasan correctamente.
El flujo de inicio de sesión es: Enviar solicitud POST a https://{{base_uri}}/hc/web/siteadminlogin/siteadmin/AdminAccess.jsp Con datos de formulario y tipo de contenido: application/x-www-form-urlencoded
La respuesta de esta llamada es una redirección 302 que establece estas dos cookies:
Set-Cookie: WSHumanClickWebSession=816d619eddd19ee46ac03bf88b381; path=/hc/web; secure; HttpOnly
Set-Cookie: WSHumanClickServer=z1-e-dnv6969; path=/hc/web; secure
Luego, la redirección activa una solicitud GET a la siguiente URL: https://{{base_uri}}/hc/web/siteadmin/siteadmin/AdminAccess.jsp?site={{form_data_site}}
Con las cookies de la respuesta POST inicial.
Postman maneja el almacenamiento de cookies automáticamente, sin embargo, en Axios estas cookies no se pasan correctamente a la redirección 302. Causando que el inicio de sesión falle y regrese a la página de inicio de sesión.
Esto es lo que tengo en el nodo:
const qs = require('qs'); const data = qs.stringify({ 'user_name': 'user_name', 'password': 'user_pass!!', 'site_number': 'site_num', 'But1':'Submit' }); const config = { method: 'post', url: 'https://base_uri/hc/web/siteadminlogin/siteadmin/AdminAccess.jsp', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data : data, withCredentials: true, }; try { const response = await axios(config); console.log(response.headers); console.log(response.data); }catch (e) { console.log(e) }O bien los datos del formulario no se envían correctamente o las cookies no se almacenan ni pasan entre las solicitudes. ¿Alguna idea sobre cómo resolver esto?