我正在尝试从浏览器会话中借用nonce,以便在其他地方使用它,即在我的npm开发环境中。
我将一个nonce传递到打开的Chrome浏览器会话中,将其放在Postman中“X-WP-nonce”的get请求头中,然后返回“Cookie nonce无效”:
我还尝试在不包围“”的情况下输入nonce值
有人知道此请求失败的原因吗?
已添加
我认为这不重要,但以防万一,这是/auth
路由处理程序:
public function authCallback(\\WP_REST_Request $request) : void {
$this->isAdminOrRejectionResponse();
wp_send_json([
\'success\' => "You have access to wp_get_current_user()"
]);
}
protected function isAdminOrRejectionResponse() {
if (current_user_can(\'administrator\') === false) {
wp_send_json([\'error\' => \'You do not have Administrator credentials.\']);
}
}
最合适的回答,由SO网友:Sally CJ 整理而成
对于远程应用程序(cURL、Postman等),或不使用浏览器时,应使用authentication plugin 喜欢Application Passwords 而不是发送cookies。
但是如果你想发送cookie,那么复制并发送WordPress登录的cookiewordpress_logged_in_<hash>
. 卷曲中的示例:
curl -H "X-WP-Nonce: <nonce>" -X POST https://example.com/wp-json/wp/v2/posts -d "Data here" -b wordpress_logged_in_<hash>=<cookie value>
请注意,WordPress将用户的登录数据(用户名和哈希数据)保存在名为
wordpress_logged_in_<hash>
(但您可以使用
LOGGED_IN_COOKIE
常量)。
此外,在上面的(cURL)示例中,我使用了X-WP-Nonce
标头以立即发送cookie。
UPDATE: 添加了在Chrome中查找和复制cookie的屏幕截图: