【发布时间】:2022-01-16 23:36:53
【问题描述】:
编辑 根据建议尝试使用 fetch 进行操作,现在我得到了这个
我正在尝试在一个简单的 react 应用程序中从 gnews.io/api 获取数据。我正在学习 React,解决方案可能很简单,但我被困在这里,无法弄清楚出了什么问题,我一直得到这个错误
fetch-jsonp.js:88 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://gnews.io/api/v4/top-headlines?country=us&token=myapi with MIME type application/json.
有趣的是,如果我复制这个网址https://gnews.io/api/v4/top-headlines?country=us&token=MYAPI&callback=jsonp_1642257010280_37644
并将其粘贴到浏览器中,我得到了所需的响应。
非常感谢任何形式的帮助
这是进行此 api 调用的 useEffect 函数
React.useEffect(()=> {
async function getNewsdata(country){
try {
let url = `https://www.gnews.io/api/v4/top-headlines?country=pk&token=${API2}`
let response = await fetchJsonp(url)
let result = await response.json()
console.log("News Data:", result)
} catch (error) {
console.log("error loading news data: ", error)
}
}
getNewsdata(props.country.trim())
},[])
【问题讨论】:
-
fetchJsonp长什么样子?你能显示那个代码吗? -
您的目标是旧浏览器吗?否则何不试试简单的
fetch? -
获取CORS错误,即使模式设置为“no-cors”也无法正常工作,我不想去服务器端打电话,肯定有办法它
-
我认为您使用了错误的域。尝试使用
gnews.io而不是www.gnews.io(它未为 CORS 配置)。