неавторизованный react js Axios 401, хотя у меня есть правильная строка на предъявителя

#reactjs #api #axios

#reactjs #API #axios

Вопрос:

У меня есть API deleteUser, который удаляет пользователя из моей базы данных MySQL. мой API отлично работает на postman. nut когда я вызываю свой API из своего приложения react, он возвращает ошибку

 Failed to load resource: the server responded with a status of 401 (Unauthorized)
  

—это мой запрос на удаление—

 const handleRowDelete = (oldData, resolve) => {
    axios
      .post("/deleteUser/"   oldData.userId, {
        headers: {
          Authorization: "Bearer "   sessionStorage.getItem("token"),
        },
      })
      .then((res) => {
        window.location.reload(false);
      })
      .catch((error) => {
        setErrorMessages(["Update failed! Server error"]);
        setIserror(true);
        resolve();
      });
  };
  

и даже более того, у меня есть un UpdateUser API, который я также вызываю в том же компоненте, и он работает отлично

—это API обновления—

 axios
        .post("/updateUser/"   newData.userId, newData, {
          headers: {
            Authorization: "Bearer "   sessionStorage.getItem("token"),
          },
        })
        .then((res) => {
          window.location.reload(false);
        })
        .catch((error) => {
          setErrorMessages(["Update failed! Server error"]);
          setIserror(true);
          resolve();
        });
    } else {
      setErrorMessages(errorList);
      setIserror(true);
      resolve();
    }
  

это точно то же самое, но API удаления не работает, я не могу понять, почему. (401 неавторизованный)

Ответ №1:

Вы передаете свои заголовки в качестве второго аргумента axios.post , но на самом деле это должен быть третий аргумент. Второй аргумент data .

     axios.post(
        "/deleteUser/"   oldData.userId,
        {}, // add empty object or null here as second argument
        {
          headers: {
            Authorization: "Bearer "   sessionStorage.getItem("token"),
        },
      })
  

Кроме того, если вы можете изменить свой API, было бы лучше использовать DELETE метод для удаления пользователя, а не POST . (и тогда ваш код будет работать, потому что axios.delete принимает заголовки в качестве второго аргумента)