React Redux Fetch操作返回“ 415(不受支持的媒体类型)”和“ 401(未经授权)”

si2*_*030 3 javascript fetch reactjs react-redux

我有一个操作,该操作创建访存以将客户端重新发布回API。

我在“标头”中发送了一个JWT,这本身不是问题,因为它也可以在GET中使用,而GET可以正常工作……但在POST中却没有。这是我的动作:

export const createNewClient = (payload) =>
  (dispatch, getState) => {
    dispatch({ type: REQUEST_CREATE_NEW_CLIENT, payload })

    const jwt = getJwt()
    if (!jwt) {
      throw new Error('No JWT present')
    }
    const token = jwt.access_token
    const headers = new Headers({
      'Authorization': `bearer ${token}`
    })
    debugger
    const task = fetch('/api/client/create', {
      method: 'POST',
      body: JSON.stringify(payload),
      headers,
    })
      .then(handleErrors)
      .then(response => response.json())
      .then(data => {
        dispatch({ type: RECEIVE_CREATE_NEW_CLIENT, payload: data })

        dispatch({
          type: SAVE_MESSAGE, payload: {
            message: "Successfully saved client",
            type: 'success'
          }
        })
      })
      .catch(error => {
        //clearJwt()
        dispatch({ type: ERROR_CREATE_NEW_CLIENT, payload: error.message })

        dispatch({ type: SAVE_MESSAGE, payload: { message: error.message, type: 'error' } })
      })
    addTask(task)
    return task
  }
Run Code Online (Sandbox Code Playgroud)

我试图修改标头以包括UTF-8,如下所示。

  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  },
Run Code Online (Sandbox Code Playgroud)

但是,这给了我401未经授权,这意味着使用它是正确的媒体类型,但现在将不被接受。

相同的JWT在Fetch GET命令中可以正常工作,因此JWT本身不是问题-我相信这可能是我编写“ Fetch”的方式。

现在我在邮递员中做同样的事情,但我并没有通过此Fetch ...

我为Fetch POST错过了什么或结构不正确,以便接受JWT等

在此处输入图片说明

bas*_*rat 5

如果按提供的图像工作

然后以下将工作

fetch('/api/client/create', {
  method: 'POST',
  body: JSON.stringify(payload),
  headers: {
    'Authorization': `bearer ${token}`,
    'Content-Type': 'application/json',
  }
})
Run Code Online (Sandbox Code Playgroud)