React Redux Fetch操作返回" 415(不支持的媒体类型)"和#34; 401(未经授权)"

时间:2017-05-26 04:17:16

标签: javascript reactjs react-redux fetch

我有一个操作,可以创建一个提取,将客户端POST回API。

我在"标题中发送了一个JWT"这本身不是问题,因为它也在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
  }

我尝试修改标题以包含UTF-8。

  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  },

然而,这只给了我401 Unauthorized,这意味着使用它是正确的媒体类型,但现在不会被接受。

同样的JWT在Fetch GET命令中工作正常,所以JWT本身不是问题 - 我相信它可能就像我写#34; Fetch"。

现在我在Postman做了同样的事情,但我没有通过这个Fetch ...

我错过或错误构建了一个Fetch POST,以便接受JWT等

enter image description here

1 个答案:

答案 0 :(得分:5)

如果它在提供的图像中起作用

然后以下工作

return this