【发布时间】:2018-09-15 11:31:45
【问题描述】:
我有一个使用 axios 打开新标签的 vue js 应用程序。下面是代码。
var win = window.open('')
win.document.body.innerHTML = Constants.LOADING_HTML
axios.get('/api/inventory/report?vehicleId=' + id, {
}).then(reporthtml => {
win.document.body.innerHTML = reporthtml.data
}).catch(error => {
win.document.body.innerHTML = error.response.data
win.document.title = 'Error'
})
在我的计算机上进行测试时,该调用运行良好。但是,在 iphone 或 ipad 上进行测试时,发出的第一个请求会引发错误。关闭打开的选项卡然后再次拨打电话后,它可以正常工作,并且所有后续电话也可以正常工作。
通过 Safari 进行调试时,当调用失败时,我会在控制台中看到以下错误。第一个选项调用看起来正确返回。但是获取失败,没有响应消息或响应代码。查看 api 日志时,调用看起来成功并返回适当的数据。
看起来 catch 被击中了,但不是因为 api,因为 error.response 是空的。当只检查错误时,它会显示网络错误。
有人知道是什么原因造成的吗?我也尝试过禁用 ios 上的弹出框,但没有成功。
谢谢。
【问题讨论】:
-
我看到了
Protocol Error,它可能与http或https有关 -
仔细检查了我所有的电话,它们都是 https。它只是第一次失败,第二次有效。
-
我已经确认这看起来是一个 IOS 唯一的问题。 Andriod 似乎没有这个问题。
-
好的。这很奇怪。
-
经过进一步调查,看来我的 web api 配置是问题所在。在将我的 axios 调用指向虚拟 api jsonplaceholder.typicode.com/todos/1 后,错误在 ios 上消失了。
标签: c# asp.net-web-api