簡體   English   中英

AMP 更新緩存導致來自源的 404 或 410 錯誤

[英]AMP update-cache resulting in 404 or 410 error from origin

幾天來,我一直在嘗試更新我網站上的 AMP 緩存頁面,但無濟於事。

雖然存在更新緩存的文檔,但它可能是由 Google 工程師編寫的,因此不是最容易閱讀的。

https://developers.google.com/amp/cache/update-cache

我已盡我所能按照指示進行操作。 我已經創建了一個私鑰和公鑰。 創建了一個 signature.bin 並使用 Google 自己的文檔中的過程對其進行了驗證。

~$ openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt

驗證正常

public-key.pem 已重命名為 apikey.pub 並上傳到以下目錄:

https://irecover.ca/.well-known/amphtml/apikey.pub

為了驗證復制沒有問題,我使用以下命令檢查了簽名:

$ openssl dgst -sha256 -signature signature.bin -verify <(curl https://irecover.ca/.well-known/amphtml/apikey.pub ) url.txt

% Total % Received % Xferd Average Speed Time Time Time Current

下載上傳總花費的剩余速度

100 450 100 450 0 0 2653 0 --:--:-- --:--:-- --:--:-- 2662

驗證正常

現在我將簽名文件轉換為 base64 並將 / 替換為 _,將 + 替換為 -

貓簽名.bin | base64 > 簽名.b64

sed 's///_/g' 簽名.b64 > 簽名.b64a

sed 's/+/-/g' 簽名.b64a > 簽名.b64b

sed 's/=//g' 簽名.b64b > 簽名.b64c

貓簽名.b64c | tr -d '\\n' > 簽名.b64

我制作了一個腳本,為我制作更新緩存 url。 它還在那一刻創建一個時間戳並將其用於 amp_ts 變量(因此 amp_ts 永遠不會超過 1 秒)。 然后我將它附加到查詢的末尾,該查詢將被我制作的腳本卷曲,所以它看起來像這樣:

https://irecover-ca.cdn.ampproject.org/update-cache/c/s/irecover.ca/article?amp_action=flush&amp_ts=1581446499&amp_url_signature=KDaKbX0AbVbllwkTpDMFPOsFCRNw2sbk6Vd552bbG3u5QrecEmQ1SoMzmMR7iSXinO7LfM2bRCgJ1aD4y2cCayzrQuICrGz6b_PH7gKpo6tqETz06WmVeiP89xh_pBOu-pyN5rRHf0Pbu8oRkD2lRqgnGrLXDfIrFTTMRmHlO0bsa8GknyXL8RNXxk9ZQaufXAz-UJpoKaZBvT6hJWREAzxoZ-rGnDPVaC3nlBCu3yPorFcTbbr0CBz2svbfGgAYLQl54lLQmUpxI8661AEe1rdOLqAyLIUb4ZiSbO65-PmIkdZWVPFHMdbpSv4GMNdvodleCWBfMAcG2C09v-LR6g

但是,這總是會導致來自 google 的相同錯誤代碼。

由於攝取錯誤而導致公鑰無效:來自源的 404 或 410 錯誤

有誰知道我做錯了什么?

需要檢查 apikey.pub 可訪問性的幾件事:

  1. /.well-known/amphtml/apikey.pub文件可被移動和桌面用戶代理訪問(例如,對於非移動設備沒有重定向,因為 AMP 緩存客戶端可能會重定向)

  2. robots.txt 中不排除公鑰,例如:

    User-agent: *
    Allow: /.well-known/amphtml/apikey.pub
  1. 公鑰響應具有預期的標題(例如 content-type: text/plain):
    curl -I https://amp.example.com/.well-known/amphtml/apikey.pub
    
    HTTP/2 200 
    date: Sun, 26 Jul 2020 23:48:55 GMT
    content-type: text/plain
    vary: Accept-Encoding
    etag: W/"1c3-173478a8840"
    last-modified: Sun, 26 Jul 2020 23:48:55 GMT

有了這些東西,我從更新/緩存端點得到了一個“OK”的成功響應

AMP 更新緩存 OK 響應

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM