在网站上,已授权使用标准方式。
如果在页面上显示<? Php echo get_current_user_id ()?>
,它将输出授权用户(id)
但是如果通过AJAX
:
$.ajax({
url: url,
method: 'POST',
processData: false,
data : $formInfo.serialize(),
cache: true,
xhrFields: {
withCredentials: true
},
来自服务器的返回0,即未授权。我试图启用发送withCredentials: true
cookie的功能,但是没有用。如何正确发送来自授权客户端的AJAX请求
在服务器上,我创建了自己的插件来接受AJAX请求。授权和注册工作已经完成。
register_rest_route('wc/v2', 'users/set-info', array(
'methods' => 'POST',
'callback' => 'pl_user_endpoint_set_info',
));
function pl_user_endpoint_set_info($request = null) {
$response = array();
$parameters = $request->get_body_params();
$response['response'] = $parameters;
$response['message'] = get_current_user_id();
$response['cookie'] = $_COOKIE;// for test cookie
return new WP_REST_Response($response, 200);
}
该插件已在动作rest_api_init中注册
add_action('rest_api_init', 'pl_wp_rest_endpoints');
代码从表单发送到客户端,但是在处理参数之前,我将首先学习如何执行此操作,以便服务器了解客户端已获得授权。
来自服务器的响应:
答案 0 :(得分:0)
如果您发出AJAX请求,则var_dump (wp_get_current_user ())
返回一个空数组。那些。没有用户。事实证明,wordpress只是认为此类请求未经检查,因此需要其他身份验证。在Authentication ajax rest处找到了解决方案。有必要在脚本nonce
在连接脚本后在function.php中:
wp_localize_script('my-script', 'wpApiSettings', array(
'root' => esc_url_raw(rest_url()),
'nonce' => wp_create_nonce('wp_rest')
));
AJAX请求:
$.ajax({
url: url,
method: 'POST',
processData: false,
data : $formInfo.serialize(),
beforeSend: function ( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );
},
....