【发布时间】:2021-04-29 20:51:45
【问题描述】:
我的 wordpress API 存在问题,用于验证的 nonce 总是返回 false。我已经尝试注销和注销,API 在身份验证关闭的情况下工作正常。我将包括下面的代码。
add_action('rest_api_init', 'api_init');
add_action('admin_enqueue_scripts', 'enqueue_script');
function api_init() {
register_rest_route("route/v1/", "/directory/(?P<req>\d+)", array(
"methods" => ["GET", "POST"],
"callback" => "api_delegate",
"permission_callback" => current_user_can("relevant_cap")
));
}
function enqueue_script() {
wp_enqueue_script( 'script_name', '/path/to/ajax/script.js', ['jquery'], '1.0.4', false);
wp_localize_script('script_name', 'ajax_var', array(
"url" => esc_url_raw("https://relevant_url.com/"),
"nonce" => wp_create_nonce('wp_rest')
));
}
对于客户端 Javascript
$(".api").on('click', order66());
function order66() {
$.ajax({
type: 'GET',
url: '/wp-json/relevant/v1/',
contentType: "application/json",
data: {
"_wpnonce": ajax_var.nonce
},
error: function (jqXhr, textStatus, errorMessage) {
console.log(errorMessage);
},
// contentType: 'application/json',
}).done(function (response) {
console.log(response);
});
}
我也尝试过使用“X-WP-Nonce”标头,但这并没有给出任何不同的结果。任何帮助或指点将不胜感激!
【问题讨论】:
-
看了一下没有什么太令人惊讶的地方,本地化对象可以在客户端很好地访问。我想我要么以某种方式错误地传递或生成它们,但我不知道该怎么做
标签: javascript php wordpress nonce