我正在构建一个 React 应用程序,它为我们的内部开发人员(提交、跟踪时间等)从服务中提取不同的统计信息。
我正在使用 fetch 从时间跟踪应用程序 Harvest 中获取 API 数据。根据他们的文档,您可以使用基本的 HTTP 身份验证。当我使用邮递员应用程序时,一切都很好,我可以看到响应很好。最初我使用:
getHarvest(){
// Set Harvest Headers
const harvestHeaders = {
method: 'GET',
headers: {
'Authorization': 'Basic xxxxxxxxxxxxxxx=',
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'no-cache',
}
};
fetch('https://factor1.harvestapp.com/projects/', harvestHeaders)
.then( response => response.json() )
.then( projects => {
// Do some stuff
} )
}
这在控制台中给了我一个错误:
Fetch API 无法加载https://myaccount.harvestapp.com/projects/。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:3000 ”。响应的 HTTP 状态代码为 404。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
因此,根据该反馈,我将函数更改为如下所示:
getHarvest(){
// Set Harvest Headers
const harvestHeaders = {
method: 'GET',
mode: 'no-cors',
headers: {
'Authorization': 'Basic xxxxxxxxxxxxxxx=',
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'no-cache',
}
};
fetch('https://factor1.harvestapp.com/projects/', harvestHeaders)
.then( response => response.json() )
.then( projects => {
// do stuff
} )
}
但这会导致身份验证错误:
GET https://myaccount.harvestapp.com/projects/ 401 (Unauthorized)
我不确定如何正确获得响应。难道我做错了什么?使用邮递员应用程序对我来说似乎很奇怪,但事实并非如此。想法?谢谢!