我正在使用Sentry记录JS客户端错误,并且有很多TypeError: cancelled错误。它仅在iOS上发生。我在Google上找不到任何东西。这是本机Javascript错误还是其他?这是什么意思?
我也得到其他语言类似的错误,如???,Abgebrochen和cancelado。这告诉我该错误不是由我的代码引起的。
我有一个带有php后端的表单中的多部分文件上传.我已经设置max_execution_time并max_input_time在php.ini 180和文件上传证实,这些值设置,并设置TimeOut了Apache 180.我也定了
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Run Code Online (Sandbox Code Playgroud)
当我在快速连接上传250MB文件时,它工作正常.当我使用较慢的连接或网络链接调节器来人为减慢它时,同一文件超时并且Chrome net::ERR_CONNECTION_RESET在1分钟(和5秒)后可靠地给我.我也尝试过其他具有相同结果的浏览器,只是不同的错误消息.
没有任何迹象表明一个错误在任何日志和我都在尝试http和https.
什么会导致上传连接在1分钟后重置?
编辑
我现在也尝试过一个简单的上传表格,绕过我正在使用的任何框架,还有1分钟的超时.
我还制作了一个睡眠脚本,在2分半钟后超时,并且可以正常工作,页面需要大约2.5分钟才能加载,所以我无法看到它的浏览器或标题是如何相关的.
我还使用了具有更多RAM的服务器来确保它与此无关.我已经在3个不同规格的不同服务器上进行了测试,但都来自同一个CentOS 7基础.
我现在也升级到PHP 7.2并再次更新相关字段,但问题没有变化.
编辑2 此孤立实例的技术堆栈是
我的技术堆栈中的其他所有内容都已从此测试区域中删除,以尝试隔离问题.EFS在系统上,但在我最孤立的测试中,它只是使用EBS.
编辑3 这里有一些来自chrome网络调试器的日志:
{"params":{"net_error":-101,"os_error":32},"phase":0,"source": {"id":274043,"type":8},"time":"3332701830","type":69},
{"params": {"error_lib":33,"error_reason":101,"file":"../../net/socket/socket_bio_adapter.cc","line":216,"net_error":-101,"ssl_error":1},"phase":0,"source": {"id":274043,"type":8},"time":"3332701830","type":56},
{"phase":2,"source":{"id":274038,"type":1},"time":"3332701830","type":159},
{"phase":1,"source": {"id":274038,"type":1},"time":"3332701830","type":164},
{"phase":1,"source": {"id":274038,"type":1},"time":"3332701830","type":287},
{"params": {"error_lib":33,"error_reason":101,"file":"../../net/socket/socket_bio_adapter.cc","line":113,"net_error":-101,"ssl_error":1},"phase":0,"source": {"id":274043,"type":8},"time":"3332701830","type":55},
{"params":{"net_error":-101},"phase":2,"source": {"id":274038,"type":1},"time":"3332701830","type":287},
{"params":{"net_error":-101},"phase":2,"source":{"id":274038,"type":1},"time":"3332701830","type":164},
{"params":{"net_error":-101},"phase":2,"source":{"id":274038,"type":1},"time":"3332701830","type":97},
{"phase":1,"source":{"id":274038,"type":1},"time":"3332701830","type":105},
{"phase":2,"source":{"id":274038,"type":1},"time":"3332701830","type":105},
{"phase":2,"source":{"id":274043,"type":8},"time":"3332701830","type":38},
{"phase":2,"source":{"id":274043,"type":8},"time":"3332701830","type":38},
{"phase":2,"source":{"id":274043,"type":8},"time":"3332701830","type":34},
{"params":{"net_error":-101},"phase":2,"source":{"id":274038,"type":1},"time":"3332701830","type":2},
Run Code Online (Sandbox Code Playgroud) 使用单页JavaScript应用程序进行提取请求时,我们遇到了不一致的客户端错误。值得注意的是,它们都是相同来源的请求。
let request = new Request(url, options);
...
window.fetch(request)
.then(response => response.json())
.then(data => ...)
.catch(error => ...)
Run Code Online (Sandbox Code Playgroud)
尽管服务器和浏览器收到200 OK响应,但仍有大约5%的承诺被拒绝并出现以下错误:
TypeError: Failed to fetch
Run Code Online (Sandbox Code Playgroud)
我很困惑...我所有的搜索都引发了有关CORS错误的讨论。鉴于这些都是相同来源的请求,因此似乎并不适用。是什么原因导致访存抛出TypeError?
我可以使用Chrome DevTools中的“网络”标签来确认获取请求已完成,其中包含200 OK响应和有效的JSON。我还可以确认网址是相同来源的。我还可以确认没有CORS飞行前请求。我已经在Chrome 66和Safari 11.1上重现了此问题。但是,我们收到了来自Chrome和Safari版本(台式机和移动版)的一系列错误报告。
编辑:
这似乎不是链接问题的重复项,因为我们没有发送CORS请求,也没有设置mode: "no-cors",也没有设置Access-Control-Allow-Origin标题。
此外,我使用mode: 'same-origin'明确设置的选项重新运行了测试。请求(仍然)成功;但是,我们(仍然)收到间歇性信号TypeError。