Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

135
Visualizações
Falta el encabezado CORS 'Access-Control-Allow-Origin' si el código de estado http no es 200

Estoy usando el complemento restivus para manejar mis solicitudes de Api.

El problema al que me enfrento es:

Si Api devuelve el código de estado 200 , todo funciona bien.

Pero si envío un token de portador de autenticación no válido en el encabezado o si devuelve algún error de la API, por ejemplo, 422, 401, 400, etc., mi solicitud de ajax falla y da este error:

 CORS header 'Access-Control-Allow-Origin' missing

Aquí están mis confirmaciones restivus:

 myApi = new Restivus({ apiPath: 'api/', defaultHeaders: { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Headers": "Access-Control-Allow-Headers, Access-Control-Request-Method, Connection, Content-Language, Access-Control-Request-Headers, Origin, X-Requested-With, Content-Type, Accept-Language, Accept, Z-Key, Authorization, client-id, client-secret, client_id, client_secret", "Content-Type": "application/json", "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS" }, enableCors: true, useDefaultAuth: false, prettyJson: true, defaultOptionsEndpoint: { action: function() { this.response.writeHead(201, { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Credentials": "true", "Access-Control-Allow-Headers": "Access-Control-Allow-Headers, Access-Control-Request-Method, Connection, Content-Language, Access-Control-Request-Headers, Origin, X-Requested-With, Content-Type, Accept-Language, Accept, Z-Key, Authorization, client-id, client-secret, client_id, client_secret", "Content-Type": "application/json", "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS" }); this.done(); return { status: "success", "data": { "message": "We love OPTIONS" } }; } } });

¿Alguien sabe lo que me estoy perdiendo aquí?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Sé que generalmente es estándar no enviar encabezados como Access-Control-Allow-Origin en solicitudes fallidas (4xx, 5xx). Solucioné esto en el pasado alojando una API detrás de un servidor web como Apache, y luego instruyendo al servidor web para que siempre configure el encabezado de respuesta Access-Control-Allow-Origin , ignorando el código de estado.

(Esta es una opción. Un ejemplo de esto se puede encontrar aquí )

También fui y miré la documentación de Restivus específicamente en la configuración de defaultHeaders para ver si mencionan este comportamiento. Desafortunadamente, no mencionan esto. Pero sí mencionan que puede anular el comportamiento del encabezado predeterminado al proporcionar explícitamente los encabezados en su objeto de respuesta.

Entonces podrías definir una clase de Response similar a esta

 class Response{ constructor(statusCode, body){ this.statusCode = statusCode; this.body = body; this.headers = { "Access-Control-Allow-Origin": "*" }; } }

Luego, simplemente devuelva un objeto de Response cada vez que envíe una respuesta, obviamente configurando el statusCode de estado y body según sea necesario.

about 4 years ago · Santiago Trujillo Relatório

0

Intentaría configurar enableCors en false .

Eché un vistazo al código de los paquetes, es posible cuando esta opción se establece en verdadero, el paquete reemplaza su valor personalizado Access-Control-Allow-Headers con el valor predeterminado del paquete de Origin, X-Requested-With, Content-Type, Accept

El mensaje de error no tiene mucho sentido con este razonamiento, pero vale la pena intentarlo.

about 4 years ago · Santiago Trujillo Relatório

0

hola, esto se debe a que cada vez que el servidor devuelve el código de estado de error del servidor, el retorno de ajax no devolverá la respuesta como su respuesta de estado de retorno ok (200), debe detectar el error de solicitud para manejar el error

 function makeRequest(endpoint, body){ $.ajax({ url: 'http://localhost:3000/' + endpoint, type: "POST", dataType: "JSON", contentType: "application/json; charset=utf-8", data: body, success: function(resp){ return resp } }).then((resp)=>{ //handle success }, err =>{ //handle error }); }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda