【问题标题】:XHR error on first mobile call is failing, subsequent calls are all successful第一次移动呼叫时的 XHR 错误失败,后续呼叫均成功
【发布时间】: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,它可能与httphttps 有关
  • 仔细检查了我所有的电话,它们都是 https。它只是第一次失败,第二次有效。
  • 我已经确认这看起来是一个 IOS 唯一的问题。 Andriod 似乎没有这个问题。
  • 好的。这很奇怪。
  • 经过进一步调查,看来我的 web api 配置是问题所在。在将我的 axios 调用指向虚拟 api jsonplaceholder.typicode.com/todos/1 后,错误在 ios 上消失了。

标签: c# asp.net-web-api


【解决方案1】:

我发现了问题所在。我对 api 进行的调用有一个异步 http 调用,该调用在 api 调用完成后返回。看来ios不喜欢。进行 http 调用同步后,错误已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多