Envío de encabezados de autorización con WordPress
Siempre que hagamos solicitudes remotas con WordPress, es probable que usemos una de las siguientes funciones:
Y, sí, a veces usaremos cURL dependiendo de la naturaleza del proyecto, pero eso está fuera del contenido de esta publicación.
Para este artículo, quiero hablar específicamente sobre cómo realizar solicitudes remotas y especificar encabezados contra una API de terceros.
Encabezados de autorización con WordPress
Siempre que se trata de realizar solicitudes asincrónicas con WordPress, el proceso suele ser así:
- Configure la función de JavaScript para hacer una llamada al lado del servidor (con un nonce seguro, por supuesto),
- Haga que el lado del servidor realice la solicitud utilizando una de las funciones antes mencionadas,
- Devuelve la respuesta en forma de mensaje de éxito o de error ,
- Haga que el JavaScript del lado del cliente maneje la respuesta de cualquier manera que parezca adecuada en función de la respuesta.
Pero, ¿qué sucede si la solicitud de API que debe realizar desde el servidor requiere algo más que un punto final básico con algunos parámetros?
Más específicamente, ¿qué sucede si lo que está escribiendo requiere que proporcione algún tipo de autorización para su trabajo? Por suerte, WordPress nos permite establecer encabezados que resuelven exactamente esto.
Si desea implementar algo como esto, supondré que el tipo de contenido será el de JSON y que la autorización será algún tipo de token (sin embargo, su implementación puede variar según el sistema con el que esté). laboral).
En este caso, mi token simplemente se identificará como $token. Y aquí hay un ejemplo simple:
<?php
$response = wp_safe_remote_post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => $token
],
'body' => wp_json_encode($args),
'method' => 'POST',
'data_format' => 'body',
]
);
Algo digno de mención
Si su host se ejecuta en Apache y este tipo de solicitud no funciona, es probable que necesite actualizar su htaccessarchivo para que incluya la siguiente regla: SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1.
Felicidades a George por conectarme con eso.
