在WP REST API请求中设置Cookie

时间:2017-01-06 作者:rorymorris89

我想用setcookie 在WP REST请求中,但它不起作用。REST请求运行正常,并能很好地执行其他任务,但它不会设置任何cookie。

下面是我的示例代码,它在上运行mywebsite.com

add_action( \'rest_api_init\', function () {
    register_rest_route( \'my_auth/v1\', \'/auth_login\', array(
        \'methods\' => array(\'POST\'),
        \'callback\' => \'auth_login\',
    ));

});


function auth_login( WP_REST_Request $request ) {
    update_post_meta(1234, \'test_field\', \'test_value\'); // this works!
    setcookie(\'auth_token\', \'test1234\', time()+3600, "/", \'mywebsite.com\'); // this doesn\'t work
    return \'test\';
}
如果我向端点发送AJAX请求(mywebsite.com/wp-json/my_auth/v1/auth_login), 这个update_post_meta 通话正常,但setcookie 呼叫没有。我已经通过访问mywebsite.com 在没有设置cookie的请求之后。

2 个回复
SO网友:rorymorris89

将此行添加到我的$.ajax 电话为我解决了问题。

$.ajax({
    xhrFields: { withCredentials: true },
    // the rest...
旁注:这需要在服务器端设置以下标头,默认情况下,REST API会启用该标头(看起来)。

Access-Control-Allow-Credentials:true

SO网友:user4301296

您需要在ajax调用中添加以下行:

xhrFields: { withCredentials: true }