在 VBScript 中检索 Cookie 并发送 Cookie 和 Post 变量

问题描述 投票:0回答:1

我正在尝试使用 vbscript 提交一些帖子数据表单。我将其发布到的网站包含一些 java,并且在标题中查看后,我注意到它正在发送一个包含

JSESSIONID
的 cookie,我相信这与 java 身份验证有关:

Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXX

当我只是发送我想要发送的地址和发布数据并查看响应文本时,它会将我发送回 java 身份验证页面,这让我认为我需要检索 jsessionid cookie 并将其与数据一起提交回来.

这是我用来提交帖子数据的函数。对于简单的表单,这似乎工作得很好,但是这个页面上的 java 有点让我困惑:

Function Fetch(URL, POST)

  Set WshShell = CreateObject("WScript.Shell")
  Set http = CreateObject("Microsoft.XmlHttp")
    http.open "POST", URL, FALSE
    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    http.send POST
  Fetch = http.responseText
 set WshShell = nothing
 set http = nothing  

End Function

我的问题实际上是:这样做正确吗?我是否需要加载第一页、获取 cookie 并将其与表单一起重新提交回来?如果是这样,我如何检索服务器在标头中发回的 cookie?当我查看他们发回的标头时我可以看到:

Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Path=/Page

非常感谢。

vbscript http-headers
1个回答
7
投票

您可以通过

http.getResponseHeader("Set-Cookie")
或解析
http.getAllResponseHeaders()
获得。然后,您应该在下一个请求中通过
http.setRequestHeader "Cookie", "JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Path=/Page"
将 cookie 值添加到请求标头。
所以,还有另一种选择(如果我没记错的话),使用
CreateObject("WinHttp.WinHttpRequest.5.1")

只要您使用该对象的同一实例,该对象就会保留以前使用的 cookie。

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