我正在尝试使用一个自定义RESTAPI来处理一些东西。我需要做的一个部分需要对API进行Post/Put。
但是API调用总是在我身上执行404,我不知道为什么。我已经注册了一条测试路线,如下所示
register_rest_route(\'test/v1\', \'test\', array(
\'method\' => WP_REST_Server::ALLMETHODS,
\'callback\' => function () {
return current_user_can("test_metadata_edit");
},
\'permission_callback\' => function () {
return true;
}
));
我通过内联脚本为Post/Put请求创建一个nonce:
wp_add_inline_script("test_script", \'var nonce = "\' . wp_create_nonce(\'wp_rest\') . \'"\');
直到这里一切都很好。
现在我尝试获取端点,这很有效。如果我根本不提供nonce,它将返回false。如果用户已登录并且我通过以下方式使用生成的nonce_wpnonce=
或者X-WP-Nonce
-标头,它返回用户功能的正确结果。但如果我尝试发布、放置或修补,它总是返回404,我完全不知道为什么。但是,如果我为注销的用户创建nonce,则会得到403。
fetch(\'/wp-json/test/v1/test\', { method: \'GET\', headers: {\'X-WP-Nonce\': \'12345\'}}) //works
fetch(\'/wp-json/test/v1/test?_wpnonce=12345\', { method: \'GET\'}}) //works
fetch(\'/wp-json/test/v1/test\', { method: \'POST\', headers: {\'X-WP-Nonce\': \'12345\'}) //does not work, 404
fetch(\'/wp-json/test/v1/test?_wpnonce=12345\', { method: \'PUT\' }) //also doesn\'t work, 404
对发生的事情有什么想法吗?