【发布时间】:2018-07-25 21:41:19
【问题描述】:
我正在学习 Golang,我正在尝试到达一个终点(我无法控制)。
这是我写的代码:
params := url.Values{}
params.Add("data[User][username]", <THE_USERNAME>)
params.Add("data[User][password]", <THE_PASSWORD>)
resp, _ := http.PostForm(<LOGIN_URL>, params)
fmt.Println(resp.Cookies())
Println 打印出[PHPSESSID=<ID>; Path=/; HttpOnly]。
在 Postman 中执行相同请求时
POST /login HTTP/1.1
Host: <HOST>
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 399a42af-00f2-4340-b7fa-1ae1fa295b62
<PARAM_DATA>
我可以看到在响应中设置了两个 cookie,PHPSESSID(我猜在 Golang 中是相同的)和au(这是我对服务器进行身份验证所需的令牌)。
我不确定自己做错了什么以及为什么在使用 Golang 代码调用端点时看不到 au Cookie。
你猜到了吗?
【问题讨论】:
-
当您尝试
curl时,您看到的内容是否与 postman 或 Go 中的相同? -
@mkopriva 我明白了。出于某种原因,我从服务器获得了很多 PHPSESSID,但由于我无法控制服务器,我只是担心
aucookie。 -
对不起,我确实看到了和 Postman 一样的东西。当
curl处于详细模式时,我可以看到Set-Cookie: au=<AUTH_TOKEN>; expires=Wed, 08-Aug-2018 21:55:25 GMT; path=/。 -
如果你在 Go 中执行
log.Println(resp.Header["Set-Cookie"]),au在那里? -
不,它只显示
2018/07/26 00:18:37 [PHPSESSID=<PHP_TOKEN>; path=/; HttpOnly]。