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'
所以我有两个问题:
- 为什么第一个有效而第二个无效?
- 我最后的需要是从 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 政策,这似乎只能从后端端实现。
我在 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'
所以我有两个问题:
- 为什么第一个有效而第二个无效?
- 我最后的需要是从 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 政策,这似乎只能从后端端实现。