Pregunta sobre API Bearer Auth de Wordpress:

La respuesta a una solicitud de preiluminación no va con una verificación de control de acceso

Un usuario preguntó 👇

Hola, no puedo obtener la señal de la aplicación React en la que estoy trabajando.

Cuando trato de hacer una llamada POST con la API de Fetch al punto final “/ api-bearer-auth / v1 / login” con las credenciales para recibir la señal, obtengo una respuesta rechazada con estado no autorizado 401.

Access to fetch at 'https://rest.xxxxxxx.com/wp-json/jwt-auth/v1/token' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Esto no pasa cuando lo hago desde Postman, aparentemente aquí la forma en que el cartero y el navegador envían la aplicación OPTIONS es diferente, y este plugin parece reclamar la autorización para una aplicación OPTIONS previa al vuelo, que no debería ser necesaria.

He probado otros plugins como «JWT Auth» y «JWT Authentication for WP REST API», y funciona perfectamente, pero prefiero usar este ya que da una señal de actualización y protege los puntos finales. todos, no como los demás.

Espero que puedas resolver esto, o algo que pueda modificar.

Saludos, Jorge.

(@ramirezsandin)

Hace 4 meses, 2 semanas

Lo sentimos, el mensaje de respuesta de error es este:

Access to fetch at 'https://rest.xxxxxxxx.com/wp-json/api-bearer-auth/v1/login' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

(@michielve)

Hace 4 meses, 2 semanas

No puedo probar esto yo mismo ahora, pero es posible que pueda agregar el siguiente código al plugin:

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
  return $error;
}

Esto debe incluirse en el api-bearer-auth.php archivo justo debajo de la siguiente línea:

public function rest_authentication_errors_filter($error) {

Entonces ahora tienes:

public function rest_authentication_errors_filter($error) {

      if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
        return $error;
      }

      // If $error is not empty, another auth method has set this
      // so we don't need to do anything.
      if (!empty($error)) {
        return $error;
      }

srl…

(@ramirezsandin)

Hace 4 meses, 2 semanas

¡Super !, lo que hizo que el código funcionara perfectamente. ¡Gracias por la ayuda!

(@michielve)

Hace 4 meses, 2 semanas

Está bien, es bueno escucharlo, he creado un nuevo problema con esta solución.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.