尝试使用/update cache/requests更新一些amp页面,但我收到403个错误。从url中删除了打开的部分/协议,因为我没有发布这么多链接的声誉,但所有内容都是https。我有一个网页:www.qponverzum.hu/ajallat/budapest-elozd-meg-a-hajhullast-mikrokameras-hajdiagnosztika-hajhagyma-es-fejborvizgalatal-tanacsadas-5000-ft-helyett-2500-ft-ert-biohajklinika-szepsigapolas-egeszseg/amp来自AMP缓存:www-qponverzum-hu.cdn.ampproject.org/c/s/www.qponverzum.hu/ajallat/budapest-elozd-meg-a-hajhullast-mikrokameras-hajdiagnosztika-hajhagyma-es-fejborvizgalatal-tanacsadas-5000-ft-helyett-2500-ft-ert-biohajklinika-szepespegapolas-egeszseg/amp我一直在关注developers.google.com/amp/cache/update-ping上的文档如果我发出/update ping请求,它看起来工作正常,返回200个无内容响应,但是由于我们希望使用/update cache的url/页面数量太多,因为它允许更高的请求速率。我已经创建了一个私有和公共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 signatureopenssl_sign($signatureUrl, $signature, $pkeyid)// urlsafe base64 encoding$signature = urlsafe_b64encode($signature);// final url for updating$ampUrl = $ampBaseUrl.$signatureUrl."&amp_url_signature=".$signature;我正在使用的urlsafe_b64encode函数:function urlsafe_b64encode($string) { return str_replace(array('+','/','='),array('-','_',''), base64_encode($string));}$ampurl看起来像这样:https://www-qponverzum-hu.cdn.ampproject.org/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&amp_ts=1500362660&amp_url_signature=NjTCnmqUGpMY_CokGxchoczSOxnTLQvcQsX4fv2gIhW3H8hVw24mKCpmNoyV-9LND3OAR9ld80KeMH3lip863p_wBorIy1BAag7bRfvWcxsPrbqbox87VMrUWCEsry5epWxKYl2qNCT1GMv8SYAJ5WR0QZR0Qjvw5MXfZjohmbvrxJ7mWlc7fcvWoIXuO_q_yFkhi7A-fOZWm9sy8UDIlq-zNEPkVUwfqfWc_HbNHgvrk9Z6zZSNzB-dWAOT6QYAc1KeEVOIbvQxKkLkGMArTpydj5iLxz0aERvglKRl215Bqh6_jZu95T5yKv7X4R127ylpWYW2YDlTR9bgRE7Faw如果我对这个url发出一个简单的get请求(使用浏览器或curl),我会得到一个403错误(“您的客户端没有获取url的权限”)。我已经检查了webserver日志,但似乎没有对公钥url发出任何请求。我想我遗漏了一些很明显的东西,所以任何反馈都会非常感谢。 最佳答案 $signatureUrl中有错误-应该是amp;而不是查询参数中的,并在openssl_sign中添加第四个参数签名需要用sha256签名,如果省略最后一个参数,则它使用sha1我已经在我的工作项目中使用了你的脚本和这两个更改,它工作得很好。如果可以,它应该在响应体中返回“ok”。检查这个https://gist.github.com/krzysztofbukowski/739ccf4061d69360b5b2c8306f5878bd
09-28 03:43