Javascript 从基于WordPress的ReactJS应用程序发出POST请求

Javascript 从基于WordPress的ReactJS应用程序发出POST请求,javascript,php,wordpress,reactjs,Javascript,Php,Wordpress,Reactjs,我正在WordPress后端上构建一个ReactJS应用程序。React应用程序运行在同一个域上,嵌入在WordPress站点中。我所关注的大部分教程都涉及如何从WordPress获取数据以做出反应。我已经成功地做到了这一点,但需要弄清楚如何从我的React应用程序向WordPress提交数据(最好通过RESTAPI) 这将是一个用于登录编辑器的自定义管理页面,可以在管理面板中使用,也可以从前端使用 作为创建帖子的示例,我天真地尝试了以下功能: saveGrid() { const

我正在WordPress后端上构建一个ReactJS应用程序。React应用程序运行在同一个域上,嵌入在WordPress站点中。我所关注的大部分教程都涉及如何从WordPress获取数据以做出反应。我已经成功地做到了这一点,但需要弄清楚如何从我的React应用程序向WordPress提交数据(最好通过RESTAPI)

这将是一个用于登录编辑器的自定义管理页面,可以在管理面板中使用,也可以从前端使用

作为创建帖子的示例,我天真地尝试了以下功能:

  saveGrid() {
    const url = "/wp-json/wp/v2/posts";
    const body = JSON.stringify({
      "title":"internet",
      "content":"teapot"
    });

    fetch(url, {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body:body

    });
  }    

我收到了401未经授权的回复。授权自己提交帖子(首选安全解决方案)的最简单方法是什么?

看起来您走对了方向

快速阅读以下内容: 向我表明,为了让WP API成功识别和验证您的请求,您所缺少的只是一个“nonce”

在上面的指南中,开发人员创建了一个用JQuery编写的JS,它向WP API发送XHR/AJAX请求,并在plugin.php中使用WP中的一些变量对脚本进行排队和本地化,以帮助在JS中处理请求

这里的要点是,他们使用了
wp\u create\u nonce('wp\u rest')
,并将其分配给一个本地化变量
nonce
,这样他们以后就可以在JS中轻松引用该变量,并将
nonce
分配给请求中的
X-wp-nonce

如果您进一步研究,您可能会找到适合您的替代方案,因为我不完全确定您是如何加载JSX文件的,但本指南可能会方便您将JSX脚本/文件排队:

更多信息


我能够解决这个问题,而不是直接从React发出post请求,而是在React外部使用Jquery AJAX提交,该提交使用React内部表单中的数据。这导致请求包含必要的cookie(我不明白为什么会这样)

看起来我可以使用oAuth,但这似乎没有必要,因为我不是真正的第三方应用程序。我如何与WordPress沟通,以回应WordPress说我是一名登录编辑?这正是我开始工作的文章。很高兴知道我在正确的轨道上。谢谢别担心,让我们知道你是否成功创建和使用了nonce,以及这是否解决了你的401问题:)越来越近了。我使用apppresser教程中的方法生成了nonce。然后我将它设置为一个窗口变量,以便React可以看到它。但是现在,我得到一个403禁止的错误,说我的nonce令牌与我的cookie不匹配。我现在正在研究这个问题。问题似乎是我的响应头不包含cookie属性。我正在使用通过admin-post.php提交的表单和生成的具有cookie属性的post请求进行替代修复。我暂时放弃。我已经使用admin-post.php而不是API满足了我的需要,这很好,因为我从管理面板提交了所有内容,所以我不需要验证。