ошибка выборки заголовок "Access-Control-Allow-Origin" отсутствует в запрошенном ресурсе
Я использую fetch API для получения данных из других API, это мой код:
var result = fetch(ip, {
method: 'get',
}).then(response => response.json())
.then(data => {
country = data.country_name;
let lat = data.latitude;
let lon = data.longitude;
//fetch weather api with the user country
return fetch(`https://api.darksky.net/forecast/efc76f378da9a5bd8bb366a91ec6f550/${lat},${lon}`);
})
.then(response => response.json())
.then(data => {
// access the data of the weather api
console.log(JSON.stringify(data))
})
.catch(error => console.log('Request failed', error));
но я сталкиваюсь с ошибкой в консоли:
Fetch API cannot load https://api.darksky.net/forecast/efc76f378da9a5bd8bb366a91ec6f550/52.3824,4.8995. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Я устанавливаю заголовки для второй выборки:
return fetch(`https://api.darksky.net/forecast/efc76f378da9a5bd8bb366a91ec6f550/${lat},${lon}`, {
mode: 'no-cors',
header: {
'Access-Control-Allow-Origin':'*',
}
});
ошибка исчезла, но console.log(JSON.stringify(data))
ничего не регистрируйте в консоли, и выборка не возвращает никакого значения.
в чем проблема с моим кодом?
1 ответов
проблема не в вашем коде JavaScript, она находится в API, сервер не поддерживает запрос cross origin, если вы являетесь владельцем этого API, вам нужно добавить 'Access-Control-Allow-Origin' заголовок ответа с разрешенными источниками (*разрешить из любого источника). в некоторых случаях JSONP в запрос может работать.
Примечание: эта проблема возникает только тогда, когда запрос генерируется из браузера