Ответ на предпечатную проверку имеет недопустимый код состояния HTTP 400 с использованием Axios

1

Я использую библиотеку Axios для вызова API в приложении React. Я вызываю API, а затем заполняю таблицу с помощью React.

Мой вызов Axios выглядит следующим образом:

     axios({
      method: 'get',
      url: DataURL,
      headers: {
        'Content-Type' : 'application/json',
        'Id': user.Id,
        'Name' : user.Name,
        'api-token' : user.access_token,
        'clientId' : 'web',
    },
    responseType: 'json',
  })
    .then((response) => {
      this.setState({ tableData: response.data });
    });

Однако я получаю эту ошибку:

XMLHttpRequest не может загрузить MY API URL Response для предполетного кода имеет недопустимый код состояния HTTP 400

То же самое было в моей среде dev, где я не добавлял заголовки, однако после перехода на новый env, который требовал, чтобы я добавлял заголовки, Im получал вышеуказанную ошибку. Мой вопрос в том, является ли это проблемой на стороне клиента (например, неправильный формат заголовка и т.д.) Или что-то связано с обработкой API-интерфейсом на стороне сервера?

  • 0
    * «Ответ на предварительную проверку имеет недопустимый код состояния HTTP 400» * - предварительная проверка - это запрос OPTIONS, и, насколько это понятно, никогда не бывает веской причины, по которой сервер должен отвечать на запрос OPTIONS с помощью 400. Это указывает на некоторую неверную конфигурацию - или отсутствие конфигурации - на сервере. В любом случае, предварительный запрос OPTIONS - это то, что браузеры выполняют самостоятельно, поэтому из своего кода внешнего интерфейса вы не можете контролировать, как сформулированы эти OPTIONS. Так что вы ничего не можете сделать, чтобы это исправить. Вместо этого необходимо исправить сервер, чтобы ответить на него правильно
  • 1
    И чтобы быть ясным, причина, по которой ваш браузер отправляет этот запрос OPTIONS для начала, заключается в том, что ваш код добавляет 'api-token', 'clientId', 'Name', 'Id' и 'Content-Type:' application / json Заголовки запроса. Даже добавление в запрос любого из этих заголовков побудит браузеры выполнить предварительную проверку. См. Developer.mozilla.org/en-US/docs/Web/HTTP/… . Поэтому, если вы хотите, чтобы этот запрос работал из внешнего кода JavaScript, работающего в браузерах, сервер, код которого делает запрос, должен быть исправлен, чтобы правильно ответить на эти предварительные опции.
Теги:
web
axios
cors

1 ответ

1
Лучший ответ

Я думаю, что это проблема на стороне сервера. Если вы используете узел в фоновом режиме, вам нужен CORS в качестве промежуточного программного обеспечения (https://www.npmjs.com/package/cors). Для других серверных решений есть, конечно же, и обработчик запросов cors.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню