当前位置: 首页 > 面试题库 >

XMLHttpRequest 206部分内容

简培
2023-03-14
问题内容

我想从JavaScript中的XMLHttpRequest对象发出部分内容请求。我正在从服务器加载一个大的二进制文件,而宁愿从服务器流式传输它,类似于html5视频的处理方式。

我可以使用setRequestHeader设置Range标头。Chrome中的网络检查器显示Range标头设置成功。但是,Accept-
Encoding标头设置为“ gzip,deflate”,Chrome不允许我设置该标头(根据W3C标准)。

有什么方法可以强制服务器仅通过javascript用XMLHttpRequest对象的206部分内容进行响应?


问题答案:

我想我知道了为什么206请求无法正常工作。启用gzip压缩后,如果可以对传出数据进行gzip压缩,则将忽略范围标头。

我要的文件是一个很大的二进制文件,nginx将该文件解释为具有mimetype application / octet-
stream。这是被压缩的模仿类型之一。如果我将文件重命名为.png文件类型,则不会压缩image / png MIME类型,因此范围请求可以正常工作。

这也是为什么将带有curl的Accept-Encoding标头设置为identity也可以使范围请求正常工作的原因。但是,我无法从XHR更改该标头。

解决方案:更改服务器上的mimetype表!



 类似资料:
  • 目录 第9章 联编并安装 FreeBSD 内核 第10章 调试内核

  • 固定映射地址和输入输出重映射 固定映射地址是一组特殊的编译时确定的地址,它们与物理地址不一定具有减 __START_KERNEL_map 的线性映射关系。每一个固定映射的地址都会映射到一个内存页,内核会像指针一样使用它们,但是绝不会修改它们的地址。这是这种地址的主要特点。就像注释所说的那样,“在编译期就获得一个常量地址,只有在引导阶段才会被设定上物理地址。”你在本书的前面部分可以看到,我们已经设定

  • 简介 内存管理是操作系统内核中最复杂的部分之一(我认为没有之一)。在讲解内核进入点之前的准备工作时,我们在调用 start_kernel 函数前停止了讲解。start_kernel 函数在内核启动第一个 init 进程前初始化了所有的内核特性(包括那些依赖于架构的特性)。你也许还记得在引导时建立了初期页表、识别页表和固定映射页表,但是复杂的内存管理部分还没有开始工作。当 start_kernel

  • 我正在编写使用webendpoint在junit上运行测试的web服务,因此我必须将所有测试保存在源代码中。问题是,我想要从IDEA和命令行直接运行测试,而最后一个我已经塞住了。 如何通过“Gradle Test”在sources文件夹(src/main/java)中运行测试?我和gradle不是一家人,但我试着用 但是它打破了使用IDEA的项目导入,My2016.1.1有时不能创建两个具有相同内

  • 问题内容: 为基于JVM的服务确定docker容器的尺寸非常棘手(众所周知)。我很确定我们的容器尺寸略有不足,并且想清除一些与监视时看到的特定jcmd(本机内存跟踪器)输出有关的问题。 问题: jcmd报告的“内部”中是否包含直接字节缓冲区? jcmd报告的“代码”中除代码缓存外还有什么? 是否有一种很好的方法来限制jcmd报告的“代码”部分。我阅读了https://docs.oracle.com

  • 我试图使用BodyPart检索MIME multipart的内容,如下所示 } 但是当包含整个MIME多部分主体部分时,提供与整个MIME消息相同的InputStream(没有内容类型、边界等),包括内容类型等。 来自 其中是MIME类型为MTOM