当前位置 : 主页 > 网络推广 > seo >

ColdFusion – 如何限制通过CFHTTP检索的数据?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我使用cfhttp来获取文档并解析内容,如下所示: cfhttp method="GET" url="#url.strURL#" resolveurl="true" useragent="#CGI.http_user_agent#" result="objGet" timeout="60" charset="utf-8" / 但是,有些文件相当大.我不需要得
我使用cfhttp来获取文档并解析内容,如下所示:

<cfhttp
        method="GET"
        url="#url.strURL#"
        resolveurl="true"
        useragent="#CGI.http_user_agent#"
        result="objGet"
        timeout="60"
        charset="utf-8"
    />

但是,有些文件相当大.我不需要得到整个东西 – 这可能需要很长时间.

在加载X个字节后,有什么方法可以停止运行cfhttp?或者设置一个限制,例如获得多少.

感谢帮助.

如果目标服务器支持它,则可以使用 Range http header:

<cfhttp
        method="GET"
        url="#url.strURL#"
        resolveurl="true"
        useragent="#CGI.http_user_agent#"
        result="objGet"
        timeout="60"
        charset="utf-8"/>
   <cfhttpparam type="header" name="Range" value="bytes=0-499" />
 </cfhttp>

Apache和IIS支持这一点,因此对于静态内容,您可能会很幸运.动态内容会更棘手……

…我刚尝试通过Apache提供CFM,看起来这样做不起作用.我怀疑如果Apache / IIS正在提供静态文件,那么它可以安全地从您请求的文档发回一系列字节,因为它可以读取该文件.如果请求是由CF / ASP / JSP /无论什么生成的,那么应该由Appliation来支持请求中的Range:标头.在我的情况下,我仍然得到整个文档,因为我的应用程序不查看Range标头.

我还应该提一下,你可以在Java中做你想做的事情,因为你已经对正在发生的事情进行了更精细的控制,但是你必须自己编写一些东西或者使用其中一个备用的HTTP客户端库.那里.这取决于我想这个功能对你有多重要.如果文档非常大,那么您可能需要使用cfhttp的file属性来避免将整个响应放入内存中,这可能会导致崩溃.

网友评论