Надсилання заголовків авторизації за допомогою WordPress
Кожного разу, коли ми робимо віддалені запити за допомогою WordPress, ми, ймовірно, будемо використовувати одну з таких функцій:
І, так, іноді ми будемо використовувати cURL залежно від характеру проекту, але це виходить за межі змісту цієї публікації.
У цій статті я хочу поговорити конкретно про створення віддалених запитів і визначення заголовків у сторонньому API.
Заголовки авторизації з WordPress
Щоразу, коли потрібно робити асинхронні запити за допомогою WordPress, процес часто виглядає так:
- Налаштуйте функцію JavaScript для здійснення виклику на стороні сервера (звичайно, із безпечним одноразовим номером ),
- Нехай сторона сервера виконає запит за допомогою однієї з вищезгаданих функцій,
- Повернути відповідь у вигляді повідомлення про успіх або помилку ,
- Нехай клієнтський JavaScript обробляє відповідь будь-яким способом, який здається відповідним на основі відповіді.
Але що, якщо для запиту API, який потрібно зробити від сервера, потрібно щось більше, ніж проста кінцева точка з кількома параметрами?
Точніше, що, якщо те, що ви пишете, вимагає від вас певного типу авторизації для вашої роботи? На щастя, WordPress дозволяє нам встановлювати заголовки, які вирішують саме це.
Якщо ви хочете реалізувати щось подібне, я припускаю, що типом вмісту буде JSON, а авторизацією буде певний тип маркера (проте ваша реалізація може відрізнятися залежно від системи, з якою ви працюєте робочий).
У цьому випадку мій маркер буде просто визначено як $token. І ось простий приклад:
<?php
$response = wp_safe_remote_post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => $token
],
'body' => wp_json_encode($args),
'method' => 'POST',
'data_format' => 'body',
]
);
Щось варте уваги
Якщо ваш хост працює на Apache, і цей тип запиту не працює, вам, ймовірно, потрібно буде оновити htaccessфайл, щоб він містив таке правило: SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1.
Дякую Джорджу за те, що він підключив мене до цього.
