我试图使用Axios做一个API请求,它在每一个windows'和Android浏览器中工作,但在MacOs Safari(但在Chrome中工作正常)或任何iOS浏览器上不工作。
在相同的代码中,我对相同的API(不同的端点)进行了另一次调用,它在Safari和IO中完全没有问题。
当我console.log抛出的异常原来是一个网络错误。
我不认为这是一个CORS的问题,因为它在另一个浏览器上工作。
我的要求:
try {
const response = await api.get(
"/precos/get",
{
headers: {
'Content-Type': 'application/json'
'token': getToken()
}
}
);
this.filtraProdutoPorTabela(response.data.data);
} catch (err){
// do something with the error
}
控制台错误:
网络错误{“接受”:“应用程序/json,文本/纯文本,/“,“此.状态类型”:“应用程序/json”,“令牌”:“e... c”},“基本URL”:“基本URL“,“转换请求”:[null],“转换响应”:[null],“超时”:0,“xsrfCookieName”:“XSRF-TOKEN”,“xsrfHeaderName”:“XSRF-TOKEN”,“最大内容长度”:-1,“httpsAgent”:{}}
2条答案
按热度按时间4sup72z81#
唯一的问题,这将导致这一点,我能想到的是,你肯定有你的计算机上的链接设置为,例如:网站
这很好,因为你在同一台机器上做它,但当你在移动的设备或任何其他设备上尝试它时,当浏览器试图点击该路径时,它会看到url的localhost部分,它指向自己,而不是你的实际机器。
要解决这个问题,你必须把你的机器的ip地址和端口,而不是字面文本“localhost”。
来自:
发送至:http://192.168.1.23:500/api/posts http://{您的IP地址}:5000/API/posts
93ze6v8z2#
当我自己调查这个问题时,我遇到了这个帖子:link not working in Safari。
由于某种原因,Safari上的链接事件未被触发。我有我的 onClick 操作,它触发了 axios 调用,绑定到html****标记。Safari没有让 axios 正确执行请求。
正在添加:
事件.预防默认值()
单击时标记调用的函数解决了该问题。