授权标头在发布请求时使用基本身份验证(JavaScript)格式错误

问题描述 投票:0回答:1

我正在尝试在wordpress网站上远程创建新用户,我正在使用所有wp网站上本机可用的rest api,我遇到的问题是,要创建新用户,您必须使用管理员帐户进行身份验证,在发送请求时出现错误:

Object {
  "code": "jwt_auth_bad_auth_header",
  "data": Object {
    "status": 403,
  },
  "message": "Authorization header malformed.",
}

除了那些标题,如果有人可以帮助,我的功能还不错

signup = (e) => {
    let { username, email, password, password2 } = this.state
    if (username !== '' && email !== '' && password !== '') {
      if (password === password2) {
        this.setState({ loading: true, error: null })
        var auth = 'Basic ' + Base64.encode('coolusername' + ':' + 'securepassword')
        console.log(auth)
        var url = 'https://example.com'
        var request = new Request(url + '/wp-json/wp/v2/users', {
          method: 'POST',
          headers: new Headers({
            'Content-Type': 'application/json',
            'Authorization': auth
          }),
          body: JSON.stringify({
            username: username,
            email: email,
            password: password
          })
        })
        fetch(request)
          .then((response) => {
            response.json().then((results) => {
             // ...
            })
          })
          .catch(function (err) {
            console.log(err)
          })
      } else {
        this.setState({ error: 'Passwords do not match' })
      }
    } else {
      this.setState({ error: 'Error: Missing fields' })
    }
  }

我认为引起此错误的原因是,'Authorization'应该跟base64 username:password一起使用,但是当我尝试解码通过的字符串时,我得到的字符串与我输入的不完全相同,我以前使用过js-base64 npm库,它很好用。

javascript reactjs post fetch
1个回答
0
投票

[如果以后有人在寻找解决方案,我已经通过使用其他插件解决了该问题,.htaccess文件和wp-config.php文件不需要进行其他修改。

wp-rest-user

https://wordpress.org/plugins/wp-rest-user/

要使用REST API注册用户,请发送POST请求至 / wp-json / wp / v2 / users / register,带有JSON正文(设置标头: 内容类型:application / json),具有三个键:用户名,电子邮件和 密码。

要使用REST API检索密码,请发送POST请求至 / wp-json / wp / v2 / users / lost-password,包括JSON(设置标头: 内容类型:application / json)正文,带有三个键:user_login。

© www.soinside.com 2019 - 2024. All rights reserved.