Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang http。获取太多重定向_Http_Go_Download - Fatal编程技术网

Golang http。获取太多重定向

Golang http。获取太多重定向,http,go,download,Http,Go,Download,我正试图从网上下载一个文件。它应该是一个简单的过程。这是我以前做过的。但是,这个135 kB zip文件的特殊链接给了我一条错误消息:Gethttp://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip: 10分钟后停止重定向。如果我将链接复制到浏览器中,文件下载时不会出现任何问题,但使用下面的代码时,会弹出错误 包干管 进口 木卫一 net/http 操作系统 func main{ 链接:=http://www1.caixa.

我正试图从网上下载一个文件。它应该是一个简单的过程。这是我以前做过的。但是,这个135 kB zip文件的特殊链接给了我一条错误消息:Gethttp://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip: 10分钟后停止重定向。如果我将链接复制到浏览器中,文件下载时不会出现任何问题,但使用下面的代码时,会弹出错误

包干管 进口 木卫一 net/http 操作系统 func main{ 链接:=http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip resp,err:=http.Getlink 如果错误!=零{ 圆锥花序 } 延迟响应体关闭 //创建文件 out,err:=os.Createms.zip 如果错误!=零{ 圆锥花序 } 推迟,结束 //将正文写入文件 _,err=io.Copyout,resp.Body 如果错误!=零{ 圆锥花序 } } 有没有关于为什么会发生这种情况以及如何避免这种情况的想法


感谢您的关注。

您的代码非常好,但您经常会发现此问题与您试图下载文件的源代码本身有关,而不是直接下载

其他工具/语言也会出现同样的问题,因为您试图访问的主机由于“User Agent”头属性无效而不断重定向您。当您希望只允许从“浏览器”下载文件,而不是从爬网、自动脚本等下载文件时,通常会出现这种情况

使用Go,您可以在发送请求之前使用req.header.SetUser-Agent添加header属性。您将创建一个请求集头的实例,并使用http.Client{}和Client.Doreq执行它

例如:

您可以在中阅读更多内容,其中指出:

用于控制HTTP客户端头、重定向策略和其他 设置,创建客户端

这里还有一些文件和文档

你可以在例如,以及许多其他优秀的文档和资源中找到更多关于这个ingeneral的信息


顺便说一句,您试图下载的zip档案似乎无效:-

您的代码很好,但您经常会发现,这个问题与您试图从中下载文件的源代码本身有关,而不是直接下载

其他工具/语言也会出现同样的问题,因为您试图访问的主机由于“User Agent”头属性无效而不断重定向您。当您希望只允许从“浏览器”下载文件,而不是从爬网、自动脚本等下载文件时,通常会出现这种情况

使用Go,您可以在发送请求之前使用req.header.SetUser-Agent添加header属性。您将创建一个请求集头的实例,并使用http.Client{}和Client.Doreq执行它

例如:

您可以在中阅读更多内容,其中指出:

用于控制HTTP客户端头、重定向策略和其他 设置,创建客户端

这里还有一些文件和文档

你可以在例如,以及许多其他优秀的文档和资源中找到更多关于这个ingeneral的信息


顺便说一句,您试图下载的zip档案似乎无效:-

在调查这个url之后,我发现它设置了cookie 设置Cookie:security=true;路径=/

您可以手动设置cookie,也可以实现CookieJar

    c := http.Client{}
    req, err := http.NewRequest("GET", link, nil)
    if err != nil {
        panic(err)
    }
    req.AddCookie(&http.Cookie{Name: "security", Value: "true", Path: "/"})

    resp, err := c.Do(req)
    if err != nil {
        panic(err)
    }

在调查了这个url之后,我发现它设置了cookie 设置Cookie:security=true;路径=/

您可以手动设置cookie,也可以实现CookieJar

    c := http.Client{}
    req, err := http.NewRequest("GET", link, nil)
    if err != nil {
        panic(err)
    }
    req.AddCookie(&http.Cookie{Name: "security", Value: "true", Path: "/"})

    resp, err := c.Do(req)
    if err != nil {
        panic(err)
    }