确定服务器是否支持resume get request

问题描述 投票:25回答:2

如何确定服务器是否支持恢复文件传输或获取请求?

我的想法是设置标头以字节“2”而不是0开始获取请求,并立即关闭http请求,如果它给出了正确的结果

但是我想知道是否有一些关于服务器响应的内容可能会向我公开这种不同类型的探测器

http get http-headers download resume-download
2个回答
37
投票

要探测服务器的下载恢复功能,您可以向服务器发送HEAD请求,并提供具有任意值的Range标头。如果响应代码为206,则支持resume。

卷曲示例:

$ curl -i -X HEAD --header "Range: bytes=50-100" http://mirrors.melbourne.co.uk/ubuntu-releases//raring/ubuntu-13.04-desktop-amd64.iso

更新:

这是Java中的一个例子:

import org.apache.http.client.ResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;

public class ResumeChecker {

    public final static void main(String[] args) throws Exception {

        HttpClient httpclient = new DefaultHttpClient();
        HttpHead httpRequest = new HttpHead("http://www.google.com");
        httpRequest.addHeader(new BasicHeader("Range", "bytes=10-20"));

        System.out.println("Executing request " + httpRequest.getURI());

        HttpResponse response = httpclient.execute(httpRequest);

        // Check here that response.getStatusLine() contains 206 code
    }
}

但是,我还没有测试过mysqlf。


4
投票

添加到@ aadel的答案:

现在,大多数服务器都会使用Accept-Ranges: bytes标头进行响应,以防它们支持恢复。 RequestMakerInsomnia可以帮助您检查请求/响应标头。

© www.soinside.com 2019 - 2024. All rights reserved.