“范围:”http 标头导致 ColdFusion 应用程序挂起

Posted

技术标签:

【中文标题】“范围:”http 标头导致 ColdFusion 应用程序挂起【英文标题】:"Range:" http header causes hang in ColdFusion app 【发布时间】:2013-05-17 15:14:00 【问题描述】:

每当我在对服务器上的 .cfm 或 .cfc 文件的 HTTP 请求中添加“范围”标头时,都会出现超时。服务器根本没有响应。

为了调试,我在服务器上创建了一个名为“/signup/test.cfm”的空白文件。它什么都没有。接下来,我对文件进行正常请求和编辑请求:

Request:
GET /signup/test.cfm HTTP/1.1
Host: site.com

Response:
HTTP/1.1 200 OK

Request:
GET /signup/test.cfm HTTP/1.1
Host: site.com
Range: bytes=0-40960

Response:
timeout in transmission from site.com

如果我在对静态文件的请求中包含 Range 标头,则没有问题。

这可能是什么原因造成的,我该如何调试它?我请求的文件是空的,所以不应该执行任何代码。 Application.cfc 为空。由于我假设没有代码正在执行,这是否意味着这是服务器配置问题?

编辑:通过向我的脚本添加标签,我已经确认它确实执行了 ColdFusion 代码。响应永远不会发回给我。

【问题讨论】:

您使用的是哪个网络服务器?你能告诉我们你是如何添加范围标题的吗? @Miguel-F 服务器:Microsoft-IIS/7.5 @Miguel-F 我正在通过名为“Burp Suite”的代理添加范围标头,该代理可以即时编辑请求,但我可以使用其他工具复制它。 问题可能是您正在请求一个空文件(即 0 字节)?你可以在修改你的 .cfm 文件以包含一些内容后尝试请求吗,即使它只是静态内容? 好的,我看看能不能找到什么。顺便说一句,我想我找到了一篇关于如何在 ColdFusion 中实现这一点的不错的帖子,假设我们可以让它做出响应。它包含一个处理 Range 请求的函数:Media Delivery to iPhones and iPads 【参考方案1】:

cf 解析器很可能无法处理范围请求,而静态文件处理程序则可以。

Range 用于获取部分内容并随后获取更多内容。例如。视频文件流式传输或下载继续。脚本处理程序不容易处理的事情,因为请求意味着一次全部返回。

这是一个带有示例范围请求的 ***,以展示其工作原理 Sample http range request session

【讨论】:

以上是关于“范围:”http 标头导致 ColdFusion 应用程序挂起的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法阻止 avplayer 发送范围 http 标头字段

在 AngularJS 中设置应用程序范围的 HTTP 标头

在 ColdFusion UDF 中,有没有办法从父函数范围引用变量?

导致 PREFLIGHT 的 HTTP 标头 - 澄清?

何时对 ColdFusion 组件中的变量进行 var 作用域?

Magnolia:启用缓存过滤器导致 Facebook 共享无法正常工作时,范围请求不提供内容