javascript - React 中 axios 的未知“网络错误”
问题描述
我们正在 React 16.13 中创建一个基本的自动化应用程序,使用 axios 0.18.1 调用不同的 API。我遇到了通常的“网络错误”异常,但我找不到任何可能导致它的信息。这是我所知道的:
- 服务器已启动。我可以在邮递员、curl 中拨打电话,在浏览器中,我可以看到“帮助”页面。
- 我可以通过以下方式在测试中使用 axios 进行调用
jest
:
const instance = axios.create({
baseURL: SERVER,
headers: {
'Authorization': "Bearer " + TOKEN
},
adapter: require('axios/lib/adapters/http')
})
let request = instance.get(PTV_FARMS_PATH);
return expect(request).resolves.toHaveProperty('data');
- 其他
axios.get
调用正在应用程序的其他部分进行,艰难的论文使用全局参数。我正在使用一个实例来覆盖它们。 - 我尝试联系的 API 是 dotNet API(等待确切版本)
这是我拨打电话的方式(删除逻辑代码):
const InventairePTV = () => {
const token = localStorage.getItem('adal.idtoken');
const PTV_SERVER = "https://my-url.com"
const PTV_FARMS_PATH = "/rds/farms"
const instance = axios.create({
baseURL: PTV_SERVER,
headers: {
'Authorization': "Bearer " + token
}
});
useEffect(() => {
const fetchData = async () =>{
await instance.get(PTV_FARMS_PATH).then((response)=>{
setData(response.data);
console.log(data);
}).catch((error)=>{
if (error.request) {
// The request was made but no response was received
console.log(error.request);
console.log('Error', error);
console.log('Message',error.message);
console.log('Config',error.config);
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
});
}
fetchData();
},[instance]);
return ()
};
我是否放入adapter: require('axios/lib/adapters/http')
实例的配置似乎没有什么区别。
我总是在浏览器的控制台中得到这个(Fedora 的 firefox 70.0)
Error Error: "Network Error"
createError http://localhost:8080/static/js/1.chunk.js:195013
handleError http://localhost:8080/static/js/1.chunk.js:194564
error.config
日志也不是很有帮助。tcpdump 显示服务器和客户端确实在通信,但我无法看到发生了什么。我确实在它们之间捕获了 9 个数据包。
我可以从这里去哪里?可能是什么问题?我可以查找更多信息吗?
解决方案
问题出在 ASP.NET 后端。我们需要像这样启用 CORS 支持:
public static void Register(HttpConfiguration config)
{
var corsAttr = new EnableCorsAttribute("http://example.com", "*", "*");
config.EnableCors(corsAttr);
}
确保在您的后端启用了 CORS。它似乎是由浏览器强制执行的(因为我可以使用 Jest 进行调用,但不能在 Firefox 中进行调用)。该网站展示了为不同后端启用 cors 支持的不同方法。它似乎具有多重安全隐患,因此我可能会对此进行更多研究,但这对于可能遇到此问题的任何人来说都是一个很好的开始。
推荐阅读
- python - Turtle 中的边界检测
- python-3.x - 沙盒访问冲突:阻止框架访问跨域框架。正在访问的框架是沙盒并且缺少“allow-same-origin”标志
- google-cloud-platform - Google Cloud Platform 上的 MVC 5 和外部登录(使用 Google 帐户)返回 null
- html - 使用飞碟生成风景 pdf?
- javascript - 匹配以字母开头和结尾的显示名称的正则表达式
- javascript - webview android中的JsQRScanner不起作用
- go - 执行 Go 文件时出错:文件不存在
- android - Android 活动和前台服务 - 一般问题
- php - 在 Linux CentOS 7 上通过 PHP 连接到 SQL Server 是否有任何特定设置
- css - css 规则问题在生产中被过度使用