admin-ajax.php 是 WordPress 用于Ajax請求的必需文件,在使用緩存插件的情況下,如果你的網站使用了Ajax請求網站數據,可能會時不時出現 admin-ajax.php 403 的情況,怎樣確定 admin-ajax.php 403 是不是因為緩存插件導致的呢?
后臺緩存插件中清空緩存,然后到瀏覽器中隨便訪問網站的一個頁面,F12 打開調試模式。
Ctrl + F5 強制刷新前臺頁面,發現 admin-ajax.php 可以正常加載,說明是緩存導致了問題。
聯想到通常使用Ajax時,我們都會使用 WordPress 內置的Nonce機制來添加請求安全驗證。如果Nonce的值失效了,但是緩存仍在,就會出現請求被拒絕。
Nonce 的默認有效期為24小時,所以,解決該問題的辦法就是定時清空緩存,或者不要緩存admin-ajax.php請求。
比如,如果你使用的是 WP Rocket 緩存插件,可以將 /wp-admin/admin-ajax.php 添加到排除路徑中:
如果使用的是 WP Fastest Cache 或 WP Super Cache 等緩存插件,可以設置一個時間自動清空緩存,比如 WP Fastest Cache 可以在【刪除緩存】選項卡按照下圖添加一個規則:每10小時清空一次全部緩存。
其他緩存插件就不介紹了,總之就是找到自動清理緩存的設置選項,設置自動清理緩存的時間不超過12小時,應該就可以了。