Invio di intestazioni di autorizzazione con WordPress
Ogni volta che effettuiamo richieste remote con WordPress, probabilmente utilizzeremo una delle seguenti funzioni:
E, sì, a volte useremo cURL a seconda della natura del progetto, ma questo è al di fuori del contenuto di questo post.
Per questo articolo, voglio parlare in modo specifico della creazione di richieste remote e della specifica delle intestazioni rispetto a un’API di terze parti.
Intestazioni di autorizzazione con WordPress
Ogni volta che si tratta di fare richieste asincrone con WordPress, il processo spesso va così:
- Configura la funzione JavaScript per effettuare una chiamata lato server (con un nonce sicuro, ovviamente),
- Far eseguire la richiesta lato server utilizzando una delle suddette funzioni,
- Restituire la risposta sotto forma di messaggio di successo o di errore ,
- Fai in modo che il JavaScript lato client gestisca la risposta in qualsiasi modo sembri appropriato in base alla risposta.
Ma cosa succede se la richiesta API che devi effettuare dal server richiede qualcosa di più di un endpoint di base con pochi parametri?
Più specificamente, cosa succede se quello che stai scrivendo richiede che tu fornisca un qualche tipo di autorizzazione per il tuo lavoro? Fortunatamente, WordPress ci consente di impostare intestazioni che risolvono esattamente questo.
Se vuoi implementare qualcosa del genere, suppongo che il tipo di contenuto sarà quello di JSON e che l’autorizzazione sarà un qualche tipo di token (tuttavia, la tua implementazione potrebbe variare in base al sistema con cui stai Lavorando).
In questo caso, il mio token sarà semplicemente identificato come $token. Ed ecco un semplice esempio:
<?php
$response = wp_safe_remote_post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => $token
],
'body' => wp_json_encode($args),
'method' => 'POST',
'data_format' => 'body',
]
);
Qualcosa che vale la pena notare
Se il tuo host è in esecuzione su Apache e questo tipo di richiesta non funziona, probabilmente dovrai aggiornare il tuo htaccessfile in modo che includa la seguente regola: SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1.
Complimenti a George per avermi messo in contatto con quello.
