【问题标题】:XHTTPRequest CORS errors on LTE vs WiFiLTE 与 WiFi 上的 XMLHTTPRequest CORS 错误
【发布时间】:2012-12-12 14:16:50
【问题描述】:

我的 Web 应用使用 XHTTPRequest 对象从单个方法进行多次 CORS 调用。通过 WiFi 一切正常。在 LTE 网络上,只有一些请求成功,其他请求显示 200 状态,但 60 秒后我看到无效响应。

只有在 LTE 上发出跨域请求时才会出现此问题。我可以在 Chrome 和 Safari 中重现该错误。

所有内容当前都托管在 Amazon S3 中,并且 CORS 配置已适当设置。

任何见解将不胜感激!

【问题讨论】:

  • 您是否添加了 CORS 响应的缓存,例如最大年龄?
  • Akash,你能详细说明一下吗?
  • 您是否在回复中添加了 Access-Control-Max-Age: 1728000?此标头将导致预检请求在客户端缓存,直到年龄到期(以秒为单位),它将直接连接到服务器而无需预检
  • 感谢 Akash - 此值已设置为非常大的数字

标签: javascript xmlhttprequest cors


【解决方案1】:

此问题与您的代码无关。众所周知,移动网络不可靠。另外,对于 CORS,通常会有一个飞行前请求,这意味着两个请求都必须成功才能使请求生效。

您需要通过正确处理这些错误来强化您的应用程序以防止出现连接故障。对于其他不可靠的网络,您也会发现同样的问题。

【讨论】:

  • 谢谢布拉德 - 我很害怕 - 你对如何处理这些错误有任何建议 - 我尝试重新发送失败的请求无济于事。
  • OK - 问题已解决 - 感谢 Brad 的洞察力 - 我的解决方案是在调用后 x 毫秒轮询 xhr 请求对象,如果请求尚未成功,则中止请求并发出另一个请求。棘手的部分是定义 x 的值 - 目前是 500 毫秒。
  • @huevosdeoro,500 毫秒是一个非常低的超时。我会把它放在 15 秒。
猜你喜欢
  • 2017-09-06
  • 2020-04-09
  • 1970-01-01
  • 2021-08-22
  • 2013-10-19
  • 1970-01-01
  • 2021-08-23
  • 2022-01-09
相关资源
最近更新 更多