#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, чтобы узнать, должно ли все работать так, как ожидалось