我想用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的请求之后。
SO网友:rorymorris89
将此行添加到我的$.ajax
电话为我解决了问题。
$.ajax({
xhrFields: { withCredentials: true },
// the rest...
旁注:这需要在服务器端设置以下标头,默认情况下,REST API会启用该标头(看起来)。
Access-Control-Allow-Credentials:true