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

179
Vistas
curl para buscar con indicador de resumen

Ha habido otras preguntas sobre el tema, pero nada parece funcionar para mí.
Tengo un CURL funcional, pero quiero traducirlo a JS (con Node).

RIZO

 curl --user "uername:pass" --digest \ --header "Content-Type: application/json" \ --include \ --request POST "https://cloud.mongodb.com/api/atlas/v1.0/groups/MY_GROUP/clusters/MY_CLUSTER/fts/indexes?pretty=true" \ --data '{ "collectionName": "collname", "database": "myDB", "mappings": { "dynamic": true }, "name": "default" }'

Respuesta

HTTP/2 401 www-authenticate: Digest realm="MMS Public API", domain="", nonce="OtwBmcu89QuyVMLW6FP1W/ZjD3preQl0", algoritmo=MD5, qop="auth", obsoleto=falso tipo de contenido: aplicación/json content-length: 106 x-envoy-upstream-service-time: 2 fecha: miércoles, 16 de febrero de 2022 17:05:37 GMT servidor: enviado

HTTP/2 200 fecha: miércoles, 16 de febrero de 2022 17:05:37 GMT seguridad de transporte estricta: edad máxima = 31536000; incluirSubdominios; política de referencia: origen estricto cuando origen cruzado políticas de dominio cruzado permitidas x: ninguna opciones de tipo de contenido x: nosniff x-mongodb-service-version: gitHash=8284a4ea05955cb13c38df5489a3794b9a691d4f; versionString=v20220216 tipo de contenido: application/json x-frame-options: DENY content-length: 216 x-envoy-upstream-service-time: 154 server: envoy

No estoy seguro de por qué hay un 401 y un 200, pero funciona. Sin embargo, obtengo un 401 sin el indicador --digest , y ninguna de las soluciones a continuación parece incluir el resumen.

A continuación se muestran todas las formas en que lo intenté, que devuelven 401 "No está autorizado para este recurso".:

Ha podido recuperar

 fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Basic ' + Buffer.from( 'user:pass' ).toString('base64'), }, body: dataString, } )

Mismo resultado con

Solicitud

 const headers = { 'Content-Type': 'application/json', }; var options = { url: url, method: 'POST', headers: headers, body: dataString, auth: { user: 'user', pass: 'pass', }, }; request(options, (error: any, response: any, body: any) => { ... });

nodo-libcurl

 const curl = new Curl(); curl.setOpt(Curl.option.HTTPHEADER, [ 'Content-Type: application/json', ]); curl.setOpt(Curl.option.URL, url); curl.setOpt(Curl.option.POST, true); curl.setOpt(Curl.option.USERPWD, 'user:pass'); curl.setOpt(Curl.option.POSTFIELDS, dataString);

Incluso

PHP

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "..."); curl_setopt($ch, CURLOPT_USERPWD, 'user:pass'); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); $result = curl_exec($ch); curl_close($ch);

Editar para el paquete request-digest

 digestRequest .requestAsync({ host: url, path: urlPath, port: 80, method: 'POST', json: true, headers: { 'Content-Type': 'application/json', }, body: body, }) .then(function (response: any) { console.log(response); }) .catch(function (error: any) { console.log(error); });

Respuesta

Error: solicitud incorrecta, la respuesta está vacía

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

PHP

Debe especificar que se trata de un resumen:

 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

Obtención de nodo

Esto es lo que he encontrado aquí :

 fetch(url, { ... headers: { 'Authorization': 'Basic ' + Buffer.from(`${username}:${password}`, 'binary').toString('base64') } ... })

Al comparar su código con el código propuesto arriba, veo que falta , 'binary' en el suyo.

solicitud-resumen

Hay un paquete request-digest que puede ayudarte. Ejemplos (tomados del enlace compartido en este párrafo):

Llamar de vuelta

 var digestRequest = require('request-digest')('username', 'password'); digestRequest.request({ host: 'http://test.com', path: '/api/v1/test.json', port: 80, method: 'GET', headers: { 'Custom-Header': 'OneValue', 'Other-Custom-Header': 'OtherValue' } }, function (error, response, body) { if (error) { throw error; } console.log(body); });

Solo promesa

 var digestRequest = require('request-digest')('username', 'password'); digestRequest.requestAsync({ host: 'http://test.com', path: '/api/v1/test.json', port: 80, method: 'GET', excludePort: false, headers: { 'Custom-Header': 'OneValue', 'Other-Custom-Header': 'OtherValue' } }) .then(function (response) { console.log(response.body); }) .catch(function (error) { console.log(error.statusCode); console.log(error.body); });
over 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