在Firefox 3中,每个域的答案是6:只要触发到同一个域的第7个XmlHttpRequest(在任何选项卡上),它就会排队,直到其他6个完成.
其他主流浏览器的数字是多少?
此外,有没有办法绕过这些限制而不让我的用户修改他们的浏览器设置?例如,jsonp请求的数量是否有限制(使用脚本标记注入而不是XmlHttpRequest对象)?
背景:我的用户可以从网页向服务器发出XmlHttpRequests,要求服务器在远程主机上运行ssh命令.如果远程主机关闭,ssh命令将花费几分钟时间失败,最终阻止我的用户执行任何进一步的命令.
我正在尝试理解HTML5 API.我正在设计Web应用程序,浏览器客户端需要从服务器下载多个文件; 用户将对下载的文件和应用程序执行某些操作,而不是需要在用户上保存状态.我知道浏览器只能将这些文件保存到它的沙盒中,只要用户可以在第二次启动应用程序时检索这些文件就可以了.我应该使用BlobBuilder还是FileSaver?我在这里有点失落.
我试图通过拖放上传大文件.我有这段Javascript代码:
xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('X-File-Name', file.name);
xhr.setRequestHeader('X-File-Size', file.size);
xhr.setRequestHeader('Content-Type', file.type);
xhr.send(file);
Run Code Online (Sandbox Code Playgroud)
where url是一个目标url的字符串,file是一个文件拖放后检索Blob到的(根据http://www.w3.org/TR/XMLHttpRequest2/#the-send-method).此代码适用于Chrome 12,Safari 5和Firefox 4,并在HTTP请求正文中发送文件的原始内容.
但是,如果文件足够大,则永远不会发送请求.相反,XMLHttpRequest对象触发和错误事件(没有任何有用的消息).在我的环境中,此限制为86Mb,但因机器而异.
Chrome的javascript控制台显示以下消息:
POST http://localhost/xfiles/xfiles.php undefined (undefined)
Run Code Online (Sandbox Code Playgroud)
这与我的代码无关(与较小的文件完美配合).
浏览器似乎在内存中并在发送之前读取整个文件.可能有一个内存不足的异常或类似的东西会停止进程.在任何情况下,都没有发送HTTP请求,因此可以肯定服务器的限制与此问题无关.
无论如何,阅读整个文件是浪费资源.
是否有任何方法以流方式逐字节发送文件,而不必先将其存储在内存中?
ajax ×1
blob ×1
browser ×1
fileapi ×1
filesaver.js ×1
html5 ×1
javascript ×1
streaming ×1
upload ×1