我目前正在開發我的第一個 Wordpress 插件,我遇到了 REST API 的問題,我不太理解。也許有比我更好的方法,但我還沒有意識到,所以我很高興獲得任何幫助!這是交易:我正在創建一個 API,該 API 應該提供來自 Wordpress mysql 數據庫的緩存數據。我正在將數據(url、mime-type、[...])從網絡資源存儲到我想要提供服務的數據庫中。要緩存的資源在策略文件中定義,如下所示:政策.json{ "files": [ { "resource_url": "https://example.come/assets/images/image.png", (...) }, (...) ]}由于文件數量是動態的,我的服務需要調整以適應策略文件規定的任何自定義路由。例如,在上述情況下,它應該通過我的 Wordpress 站點提供資源,該站點最初來自 example.com。因此,如果 有請求,則應該提供https://my-wordpress-site.com/wp-json/example/v1/assets/images/image.png緩存的文件。https://example.come/assets/images/image.png我的 REST API 看起來像這樣:我的想法是,我創建一個可讀 (GET) 的其余路由,它接受其余 API 上的所有請求。一旦請求進來,它就會被過濾器攔截rest_pre_serve_request,以檢查數據庫是否緩存了所請求的文件,如果緩存了,則提供該文件。這是我的方法:根據文檔,我可以簡單地回顯來自過濾器的數據并返回true或false指示請求是否已得到服務。但就我而言,我還必須添加其他數據,例如響應的Status-Code和Content-Type,以便客戶端能夠正確處理它?,F在這是癥結所在。該邏輯的工作方式與我想要的完全一樣,并且它按照應有的方式服務請求,但我仍然收到已從PHP發送警告的經典標頭,上面代碼中標記了第 41 行和第 92 行。那么,我在這里做的事情有什么根本錯誤嗎?或者也許有人知道如何正確處理保存的東西?我感謝您的幫助!!
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
我找到了解決我的問題的方法。
Wordpress 在 中具有默認的 CORS 過濾器.../wp-includes/rest-api.php on line 596
,在此過濾器中 Wordpress 設置默認標頭以發送“帶有 API 請求的跨源資源共享標頭”。(https://github.com/WordPress/wordpress-develop/blob/5.4/src/wp-includes/rest-api.php#L596)此過濾器以默認優先級 (10) 添加到 REST API,因此我只是必須給我的自定義過濾器更高的優先級,以便讓它在默認 WP CORS 過濾器之后執行。
add_filter('rest_pre_serve_request', 'serve_static_resources', 11, 4);
然后警告就消失了。
- 1 回答
- 0 關注
- 134 瀏覽
添加回答
舉報
0/150
提交
取消