【发布时间】:2018-04-26 04:57:32
【问题描述】:
我正在 WordPress 中进行 AJAX 调用以连接 API。为此,我尝试使用随机数来防止任何未经授权的访问或机器人访问。这是我的代码:
functions.php
add_action('wp_enqueue_scripts', 'yrc_cst_ajax_platform_script_enqueue');
function yrc_cst_ajax_platform_script_enqueue () {
wp_enqueue_script(
'platform',
get_template_directory_uri(). '/includes/platform.js',
array('jquery'), '1.0', true);
wp_localize_script('platform', 'yrc_cst_platform', array(
'ajax_url' => admin_url('admin-ajax.php'),
'ajax_nonce' => wp_create_nonce('platform_security')
));
}
add_action('wp_ajax_save_platform_contact', 'yrc_cst_save_platform_contact');
在 AJAX 操作方法中我写了这个(functions.php):
function yrc_cst_save_platform_contact() {
if ( check_ajax_referer( 'platform_security', $_POST['security'] ) ) {
var_dump($_POST['security']);
}
...
}
这里是 AJAX 调用:
jQuery.ajax({
url: yrc_cst_platform.ajax_url,
type: 'post',
data: {
action: 'save_platform_contact',
security: yrc_cst_platform.ajax_nonce,
contact_email: client_email
},
success: function(response) {
// Doing my stuff...
}
});
在控制台中我看到了这个
加载资源失败。服务器响应状态码:403 (禁止)/wp-admin/admin-ajax.php
如果我删除块 check_ajax_referer(...),一切正常。一切都在我的本地。我仅以登录用户身份测试循环。
我不知道如何解决它。
【问题讨论】:
标签: jquery ajax wordpress nonce