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

如何获取重定向URL而不是golang中的页面内容?

微生俊
2023-03-14
问题内容

我正在向服务器发送请求,但它正在返回网页。有没有办法获取网页的网址呢?

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://www.google.com", nil)
    if err != nil {
        panic(err)
    }

    client := new(http.Client)
    response, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    fmt.Println(ioutil.ReadAll(response.Body))
}

问题答案:

您需要检查重定向并停止(捕获)它们。如果捕获重定向,则可以使用响应结构的定位方法获取重定向URL(重定向到该URL)。

package main

import (
    "errors"
    "fmt"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://www.google.com", nil)
    if err != nil {
        panic(err)
    }
    client := new(http.Client)
    client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
        return errors.New("Redirect")
    }

    response, err := client.Do(req)
    if err != nil {
        if response.StatusCode == http.StatusFound { //status code 302
            fmt.Println(response.Location())
        } else {
            panic(err)
        }
    }

}


 类似资料:
  • 问题内容: 有时我的URL会重定向到新页面,因此我想获取新页面的URL。 这是我的代码: 输出为: stackoverflow.com/questions/88326/does-elmah-handle-caught-exceptions-as- well 它对于网站效果很好,但是对于sears.com网站却无法正常工作。 如果我们输入URL打击: 输出仍然是: http://www.sears.

  • 问题内容: 在Python中,我使用urllib2打开一个URL。该URL重定向到另一个URL,该URL重定向到另一个URL。 我希望在每次重定向后打印出网址。 例如 -> =重定向到 A-> B-> C-> D 我想打印B,C和D的URL(A是已知的,因为它是起始URL)。 问题答案: 最好的方法可能是继承。深入Python的重定向一章可能会有所帮助。

  • 问题内容: 我正在使用ajax表单jquery插件通过ajax提交表单(在对话框中)。 这工作正常,然后我从服务器返回html响应。响应来自我无法修改的标准后重定向php页面。 有没有一种方法可以使用jquery(在ajax回调内部)获取此重定向的URL(最终的GET位置)? 问题答案: 我没有使用过您使用的插件,但是如果您使用jQuery Ajax命令 ,则会收到XMLHttpRequest对象

  • 问题内容: 我想记录301s和302s,但是找不到在Client.Do,Get,doFollowingRedirects,CheckRedirect中读取响应状态代码的方法。我是否必须自己实施重定向才能实现这一目标? 问题答案: 该类型允许您指定自定义传输方式,这应允许您执行后续操作。应该执行以下操作: (如果仅支持链接到默认传输,则可以稍微简化一下)。 然后,您可以使用此传输方式创建客户端,并记

  • 我正在使用Stripe Connect,并在文档中使用了它们的示例代码。你将一个用户重定向到条带页面,他们注册后会重定向回你的站点。Stripe然后会在URL中发送一个代码,以便您能够访问并向用户帐户收费。 重定向后,这段代码就是他们在示例中的内容: 重定向URL为https://connect.stripe.com/oauth/authorize?response_type=code

  • 问题内容: 我正在使用Ajax.BeginForm创建一个表单,该表单将ajax回发到某个控制器操作,然后,如果该操作成功,则用户应重定向到另一个页面(如果该操作失败,则使用AjaxOptions UpdateTargetId)。 如果删除成功,我将返回重定向结果: 但是Home Controller Index视图已加载到UpdateTargetId中,因此我最终在页面中找到一个页面。我在考虑两