WP-API和基本身份验证在POST时返回403,但未获取

时间:2015-10-23 作者:TJ Sherrill

我正在使用最新的WP-API和推荐的基本身份验证,测试从远程向WP添加帖子。

我在WP端打开了访问标头:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization, Content-Type");
当我将Get请求提交给:http://sandbox.ravennainteractive.com/wp-json/wp/v2/posts 该调用可以轻松验证并返回Hello World帖子。

当我向同一url提交Post请求时。我出错了。下面是我的jquery ajax调用:

$(\'#test-post\').submit(function(e){
    e.preventDefault();

    var title = $( \'#title\' ).val();
    var content = $( \'#content_raw\' ).val();

    var postData = {
        title: title,
        content: content
    }

    console.log(postData);

    $.ajax({
        method: \'POST\',
        contentType: \'application/json\',
        data: postData,
        url: sandboxUrl,
        beforeSend: function( xhr ) {
           xhr.setRequestHeader (\'Authorization\', \'Basic \'+ btoa( \'apiuser\' + \':\' + \'PASSWORD\' ));
        },
        success: function(data){
            console.log(data);
            alert(\'Your comment was successfully added\');
        },
        error: function(data){
            console.log(data);
            alert(\'There was an error adding your comment\');
        }
    });

    return false;
});
响应加载资源失败:服务器响应状态为403(禁止)

数组[0]响应文本:“[{”code“:”rest\\u禁止“,”message“:”您没有执行此操作的权限“,”data“:{”status“:403}}}]”

如果运行这段代码,删除不必要的额外内容,查询就会工作并返回Hello World帖子。

 $(\'#test-post\').submit(function(e){
    e.preventDefault();

    $.ajax({
        method: \'GET\',
        url: sandboxUrl,
        beforeSend: function( xhr ) {
           xhr.setRequestHeader (\'Authorization\', \'Basic \'+ btoa( \'apiuser\' + \':\' + \'PASSWORD\' ));
        },
        success: function(data){
            console.log(data);
            alert(\'Your comment was successfully added\');
        },
        error: function(data){
            console.log(data);
            alert(\'There was an error adding your comment\');
        }
    });

    return false;
});
我如何解决这个问题?

1 个回复
SO网友:Kirill Feoktistov

我也遇到过同样的问题。

。。。建议的基本身份验证。。。

我发现问题出在基本的Auth插件中。WP-API人员recommend 使用他们自己的插件,这个解决方案适合我。

停用WordPress仪表板中所有激活的基本身份验证插件,在WordPress运行的机器上转到插件文件夹

git克隆https://github.com/WP-API/Basic-Auth.git

进入WordPress管理面板的插件页面JSON基本身份验证应在列表中。激活它。

现在,通过POST请求创建记录应该可以了。

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct