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.

Respuesta HTTP en el nivel 400 o 500

Soy principiante en gRPC. Mi programa está escrito con ‍‍nuxtjs y es una página de inicio de sesión simple que recibe el nombre de usuario y contraseña y lo envía al servidor utilizando gRPC.
Todo está bien cuando envío una solicitud con BloomRPC. Pero cuando uso el navegador, la solicitud no se envía al servidor.

Mi clase auth es la siguiente:

// auth.js

export default class {
  constructor(vars) {
    this.tokenKey = vars.tokenKey
    this.proto = vars.proto
    this.client = new vars.proto.AuthenticationClient('http://127.0.0.1:50051', null, null)
  }

  async loginRequest(user) {
    const request = new this.proto.LoginRequest()
    request.setUsername(user.username.trim().toLowerCase())
    request.setPassword(user.password.trim()) 
    return await this.client.login(request, {})    
  } 
}

Este error se muestra al solicitar al servidor con el navegador, ya sea que el servidor esté en funcionamiento o no.

ERROR_CONNECTION_REFUSED
message: 'Respuesta HTTP en nivel 400 o 500'
...

Captura de pantalla de Chrome:
Captura de pantalla de Chrome

¿Necesito hacer una configuración específica?

Solo quiero una pista para configurarlo.

ACTUALIZACIÓN:

Este enlace dice que debes usar Envoy. Pero, ¿por qué lo necesitamos? ¿Y cómo lo configuro?

Captura de pantalla de BloomRPC:

Como puedes ver en el lado derecho de la imagen, la respuesta se devuelve correctamente.
captura de pantalla de bloomrpc

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas para el envío de solicitudes gRPC desde el navegador

    Si puedes enviar solicitudes utilizando BloomRPC pero no puedes enviar solicitudes desde el navegador, es posible que necesites configurar componentes adicionales como EnvoyProxy.

    El mensaje de error que estás recibiendo ERROR_CONNECTION_REFUSED message: 'Http response at 400 or 500 level' sugiere que el navegador no puede conectarse al servidor.

    En tu clase auth, estás creando un nuevo cliente para AuthenticationClient y pasando la dirección del servidor como `http://127.0.0.1:50051`. Esto podría funcionar para pruebas locales, pero puede causar problemas cuando la aplicación se implementa en un entorno diferente.

    Para solucionarlo, podrías considerar agregar una variable de entorno para la dirección del servidor o pasarla como parámetro al instanciar AuthenticationClient.

    Además, como se menciona en este enlace, es posible que necesites utilizar EnvoyProxy para las solicitudes gRPC desde el navegador. EnvoyProxy actúa como puente entre el navegador y el servidor gRPC, y se encarga de la traducción del protocolo gRPC entre ambos.

    Para configurar EnvoyProxy, deberás crear un archivo de configuración que especifique el servidor de upstream, y luego ejecutar EnvoyProxy con ese archivo de configuración. Puedes encontrar más información sobre cómo hacer esto en la documentación de EnvoyProxy.

    Espero que esto te ayude a encontrar un punto de partida para solucionar tu problema!

Comments are closed.