Getting "TypeError: Failed to fetch" with some url

Getting "TypeError: Failed to fetch" with some url

我在 React App 中遇到“TypeError: Failed to fetch”错误。

根据查询的 url,我 运行 有时会遇到错误,尽管当我在浏览器中测试查询时 return 得到了有效结果。

这里有两个例子,两个样本 URL:

(function(){

    var GetRequestResult = function (url) {
        return fetch(url, {
        headers: { 'Access-Control-Allow-Origin': '*'}})
        .then(response => response.text())
        .then(text => console.log(text))
        .catch(error => console.log(error))
    };
  
  this.GetRequestResult = GetRequestResult;

})(this);

console.log(GetRequestResult('https://jsonplaceholder.typicode.com/comments?postId=1')); // Works
console.log(GetRequestResult('http://api.plos.org/search?q=title:DNA')); // Returns 'TypeError: Failed to fetch'

所以我有两个问题:

  1. 为什么第一个有效而第二个无效?
  2. 我最后的需要是从 Google 的 Recaptcha API (https://developers.google.com/recaptcha/docs/verify) using the URL: https://www.google.com/recaptcha/api/siteverify 中检索响应。我也遇到了这个 url 的错误。 我猜它与 CORS 有关(我试图修改我的请求的 Headers,将 https://www.google.com 定义为代理,使用不同的方法来执行请求......)但没有成功。有解决这个问题的想法吗?
async function getRequest() {
    fetch('https://api.plos.org/search?q=title:DNA')
    .then( res => res.json())
    .then( data => console.log(data.response.docs))
    .catch( e => console.log(e))
}

以下代码在 nodejs 中运行

问题已解决

我试图从我的前端调用 Google Recaptcha API (https://www.google.com/recaptcha/api/siteverify)。

由于 Google 的 CORS 政策,这似乎只能从后端端实现。