Openssl и PHP
сь использовать / update-cache / запросы для обновления некоторых страниц AMP, но я получаю 403 ошибки.
Удалил начальную часть / протокол из URL, так как у меня нет репутации публиковать столько ссылок, но все это https.
У меня есть страница по адресу: www.qponverzum.hu/ajanlat/budapest-elozd-meg-a-hajhullast-mikrokameras-hajdiagnosztika-hajhagyma-es-fejborvizsgalattal-tanacsadas-5000-ft-helyett-2500-ftjert-b szepsegapolas-egeszseg / амп
Из кеша AMP: www-qponverzum-hu.cdn.ampproject.org/c/s/www.qponverzum.hu/ajanlat/budapest-elozd-meg-a-hajhullast-mikrokameras-hajdiagnosztika-hajhagyma-es-sjatasborv -5000-фут-helyett-2500 футов-ERT-biohajklinika-szepsegapolas-egeszseg / усилитель
Я следил за документацией по адресу developers.google.com/amp/cache/update-ping.
Если я делаю запрос / update-ping, он, кажется, работает нормально, возвращает ответ 200 без содержимого, но из-за большого количества URL / страниц мы хотели бы использовать / update-cache, поскольку он учитывает более высокую частоту запросов ,
Я создал закрытый и открытый ключ RSA и сделал доступным открытый ключ по адресу www.qponverzum.hu/.well-known/amphtml/apikey.pub.
Я пытался использовать следующий код PHP для создания URL-адреса обновления кэша
$ampBaseUrl = "https://www-qponverzum-hu.cdn.ampproject.org";
$signatureUrl = '/update-cache/c/s/www.qponverzum.hu/ajanlat/budapest-elozd-meg-a-hajhullast-mikrokameras-hajdiagnosztika-hajhagyma-es-fejborvizsgalattal-tanacsadas-5000-ft-helyett-2500-ft-ert-biohajklinika-szepsegapolas-egeszseg/amp?amp_action=flush&_ts='.time();
// opening the private key
$pkeyid = openssl_pkey_get_private("file://private-key.pem");
// generating the signature
openssl_sign($signatureUrl, $signature, $pkeyid)
// urlsafe base64 encoding
$signature = urlsafe_b64encode($signature);
// final url for updating
$ampUrl = $ampBaseUrl.$signatureUrl."&_url_signature=".$signature;
Я использую функцию urlsafe_b64encode:
function urlsafe_b64encode($string) {
return str_replace(array('+','/','='),array('-','_',''), base64_encode($string));
}
Если я сделаю простой запрос GET на этот URL (с помощью браузера или curl), я получу ошибку 403 («У вашего клиента нет разрешения на получение URL»).
Я проверил логи веб-сервера, но не похоже, что есть какие-либо запросы к URL открытых ключей.
Я думаю, что упускаю что-то очень очевидное, поэтому любая обратная связь будет принята с благодарностью.