gpt4 book ai didi

go - 使用 cookie 测试请求

转载 作者:IT王子 更新时间:2023-10-29 02:16:31 24 4
gpt4 key购买 nike

我写了一个 cookie getter 和 setter。现在想测试一下,写了下面的测试函数。

func TestAuthorizationReader(t *testing.T) {

tw := httptest.NewServer(testWriter())
tr := httptest.NewServer(Use(testReader()))
defer tw.Close()
defer tr.Close()

c := &http.Client{}
rs, err := c.Get(tw.URL)
assert.NoError(t, err, "Should not contain any error")

// Assign cookie to client
url, err := rs.Location()
fmt.Print(url)
assert.NoError(t, err, "Should not contain any error")
//c.Jar.SetCookies(url, rs.Cookies())

}

测试在第二部分失败,作为我得到的输出消息

- FAIL: TestAuthorizationReader (0.05s)
Location: logged_test.go:64
Error: No error is expected but got http: no Location header in response
Messages: Should not contain any error

我无法获取 URL 位置指针,我这里有什么问题吗?

最佳答案

Response.Location 方法返回 Location 响应 header 的值。您通常只希望看到重定向响应的 header ,因此出现此错误不足为奇。

如果您想知道用于检索特定响应的 URL,请尝试 rs.Request.URL.String()。即使 HTTP 库遵循重定向来检索文档,这也会查看用于此特定响应的请求,这就是您在确定 cookie 的来源时所追求的。


如果您只是希望客户端跟踪由它处理的请求设置的 cookie,您需要做的就是在客户端上设置 Jar 属性。像这样:

import "net/http/cookiejar"

...
c := &http.Client{
Jar: cookiejar.New(nil),
}

现在,在较早的响应中设置的 cookie 应该在以后的同源请求中设置。

关于go - 使用 cookie 测试请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com