Проблемы с использованием uri в axios

#reactjs #request #axios #cors #uri

#reactjs #запрос #axios #cors #uri

Вопрос:

В настоящее время я работаю с api rest, где я передаю параметры контроллера, версию и действие через URI. Однако, когда я выполняю запрос с URI, содержащим более 19 символов, он выдает ошибку CORS:

Доступ к XMLHttpRequest в ‘http://my-api-host/toll/vehicle/v1/list ‘из источника’http://localhost: 3000’ заблокирован политикой CORS: Ответ на предполетный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok.

При аутентификации запрос работает даже с URI, содержащим более 19 символов. Однако любой другой запрос с другим URI, который содержит более 19 символов, выдает ту же ошибку. Я использую API своего приложения, и запрос работает нормально.

Я использую axios в Reactjs. API уже настраивается на прием типа контента, который я использую (application / json), а также уже принимает запросы из разных источников.

Мой код запроса:

 request(uri, params = {}){
        return new Promise((resolve, reject) => {
            axios
                .post('http://my-api-host'   uri, JSON.stringify(params), {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                })
                .then(response => {
                    if (response.data.success) {
                        resolve(response.data);
                    } else {
                        reject(response.data);
                    }
                });
        });
    };
  

Кто-нибудь проходил через это и мог бы помочь? заранее спасибо

Ответ №1:

Вы использовали выборку вместо этого?

 async function postData(url = '', params = {}) {
  // Default options are marked with *
  const response = await fetch(url, {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'cors', // no-cors, *cors, same-origin
    headers: {
      'Content-Type': 'application/json'
    },
    qs: JSON.stringify(params) // query string data
  });
  return response.json(); // parses JSON response into native JavaScript objects
}

postData('http://my-api-host', params)
  .then(data => {
    console.log(data);
  });
  

Комментарии:

1. странно то, что если я печатаю некоторые данные в своем API, запрос возвращает 200, и я фиксирую те данные, которые я печатаю. И после того, как я это сделаю, он обработает все запросы, которые ранее выдавали эту ошибку, затем я снова печатаю некоторые данные в api, и это снова работает. Странно, не так ли?

2. Странно, можете ли вы поделиться своим api, также включающим CORS в API

3. В моем API-контенте эта конфигурация: Заголовок set Access-Control-Allow-Origin «*» Заголовок set Access-Control-Allow-Methods «POST, GET, DELETE, OPTIONS» Заголовок set Access-Control-Max-Age «1800» Заголовок set Access-Control-Allow-Headers «Origin, X-Requested-With, Content-Type, Accept, x-client-key, x-client-token, x-client-secret, Authorization» Заголовок set Access-Control-Allow-Credentials «true»

4. Я запускаю другой тест, и что странно, так это то, что если я печатаю некоторые данные в своем API, запрос возвращает 200, и я фиксирую те данные, которые я печатаю. И после того, как я это сделаю, он обработает все запросы, которые ранее выдавали эту ошибку, затем я снова печатаю некоторые данные в api, и это снова работает. Странно, не так ли?

5. великий Натан много раз это зависит от настроек API, чтобы узнать, должно ли все работать так, как ожидалось