簡體   English   中英

React Redux Fetch操作返回“415(不支持的媒體類型)”和“401(未授權)”

[英]React Redux Fetch action returning “415 (Unsupported Media Type)” and “401 (unauthorized)”

我有一個動作,創建一個提取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本身不是問題 - 我相信它可能是我寫“Fetch”的方式。

現在我在Postman做了同樣的事情,但我沒有通過這個Fetch ...

我錯過或錯誤構造了一個Fetch POST,以便接受JWT等

在此輸入圖像描述

如果它在提供的圖像中工作

然后以下將工作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM