为了账号安全,请及时绑定邮箱和手机立即绑定

WordPress Rest_pre_serve_request 产生 PHP 标头警告

WordPress Rest_pre_serve_request 产生 PHP 标头警告

PHP
POPMUISE 2023-09-15 21:34:19
我目前正在开发我的第一个 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,以便客户端能够正确处理它。现在这是症结所在。该逻辑的工作方式与我想要的完全一样,并且它按照应有的方式服务请求,但我仍然收到已从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);

然后警告就消失了。


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信