javascript - Tindakan React Redux Fetch mengembalikan "415 (Jenis Media Tidak Disokong)" dan "401 (tidak dibenarkan)"


Saya mempunyai satu tindakan yang mencipta fetch untuk POST klien kembali ke API.

Saya menghantar JWT dalam "headers" yang sendiri bukan masalah kerana ia juga digunakan dalam GET yang berfungsi dengan baik... tetapi tidak dalam POST. Berikut adalah tindakan saya:

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
  }

Saya cuba mengubah suai pengepala untuk memasukkan UTF-8 seperti ini.

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

Walau bagaimanapun, ini hanya memberikan saya 401 Tidak Dibenarkan yang bermaksud dengan menggunakan ini, ia adalah jenis media yang betul tetapi kini tidak akan diterima.

JWT yang sama itu berfungsi dengan baik dalam arahan Fetch GET jadi JWT itu sendiri bukan masalah - saya percaya ia mungkin cara saya menulis 'Fetch'.

Sekarang saya melakukan perkara yang sama dalam Postman dan saya berjaya, tetapi tidak dengan Fetch ini...

Apa yang telah saya terlepas atau tersusun secara salah untuk Fetch POST supaya JWT diterima dan sebagainya

Jawapan #1

Jika ia berfungsi seperti dalam imej yang disediakan

maka yang berikut akan berfungsi

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