【问题标题】:Fetch isn't setting cookiesFetch 没有设置 cookie
【发布时间】:2021-07-03 00:25:55
【问题描述】:

我有一个在 root / 上运行的 reactjs 前端。

在同一个域和服务器上,有一个 Wordpress 实例在默认的 Wordpress slugs(/wp-admin/wp-json 等)下运行。我已经通过 WP API 通过 JWT 对用户进行身份验证。

问题是我需要获取 Wordpress 默认身份验证 cookie,以便用户无需登录两次即可在 Wordpress 和 reactjs 页面之间切换。

我开始在登录时添加第二个提取,它调用/login.php 路由并将登录凭据作为表单数据发布。在 Postman 中,我得到了我需要的正文、标题和身份验证 cookie:

如果我在我的 react 前端中获取它,我没有得到 cookie,也没有设置,也没有在 document.cookie 下或在开发工具中可用。

这是我在 react 中的 fetch 函数,它返回仪表板页面作为响应数据和状态代码 200:

async handleCookies() {
    const formData = new FormData()
    formData.append('log', this.state.mail)
    formData.append('pwd', this.state.password)

    await fetch('XXX.XXX.XXX.XXX/wp-login.php', {
      method: 'POST',
      body: formData,
      credentials: 'include',
      headers: { 'Content-type': 'application/x-www-form-urlencoded', Cache: 'no-cache' },
    })
     .then(response => response)
     .then(cookies => {
        alert(cookies)
     })
     .catch(err => console.log(err))
}

期望:我期望收到 cookie。

【问题讨论】:

    标签: reactjs wordpress cookies fetch


    【解决方案1】:

    事实证明,我没有以正确的方式传递凭据。现在一切正常。

        await fetch('XXX.XXX.XXX.XXX/wp-login.php', {
          method: 'POST',
          body: `log=${encodeURIComponent(EMAIL)}&pwd=${encodeURIComponent(PASSWORD)}`,
          credentials: 'include',
          headers: { 'Content-type': 'application/x-www-form-urlencoded', Cache: 'no-cache' },
        })
    

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 2017-07-05
      • 2014-11-07
      • 2016-08-17
      • 2013-07-02
      • 1970-01-01
      • 2020-12-07
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多