维基百科 API 响应中缺少 CORS 标头“Access-Control-Allow-Origin”

IT技术 javascript reactjs cors axios wikipedia-api
2021-04-30 05:15:01

我正在尝试使用 reactJS 中的 axios 从 Wikipedia API 获取数据。这是我的获取请求

axios.get('https://en.wikipedia.org/w/api.php?action=opensearch&search=lol&format=json&callback=?')
     .then((response) => {
       console.log(response);
     })
    .catch((error)=>{
       console.log(error);

    });

我收到此错误:

跨域请求被阻止:同源策略不允许在https://en.wikipedia.org/w/api.php?action=opensearch&search=lol&format=json&callback= ?读取远程资源 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。

然后我将启动脚本更改为:

HTTPS=true yarn start

我的服务器以 https 启动,但错误仍然存​​在。我也尝试按照其他线程中的建议将 json 更改为 jsonp,但它似乎也没有帮助。

1个回答

您需要添加origin=*到维基百科 API 查询参数:

axios.get('https://en.wikipedia.org/w/api.php?origin=*&action=opensearch&search=lol')
     .then((response) => {
       console.log(response);
     })
    .catch((error)=>{
       console.log(error);
    });
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

有关背景信息,请参阅Does Wikipedia API support CORS or only JSONP available? 中的答案.