在VBScript中检索cookie并发送cookie和发布变量

Sim*_*mon 5 vbscript http-headers

我正在尝试使用vbscript提交一些帖子数据表单。我将其发布到的站点包含一些Java,并且在标题中戳了一下,我注意到它正在发送一个cookie JSESSIONID,其中包含,我相信这与Java身份验证有关:

Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

当我只发送我想发送的地址和帖子数据并查看responsetext时,它会将我发送回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
Run Code Online (Sandbox Code Playgroud)

我的问题确实是:该怎么做?我是否需要加载第一页,获取Cookie并使用表单重新提交它?如果是这样,我该如何检索服务器在标头中发送回的cookie?当我查看它们发送回的标题时,我可以看到:

Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Path=/Page
Run Code Online (Sandbox Code Playgroud)

非常感谢。

Kul*_*gin 5

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

只要您使用同一个实例,它就能记住先前在下一个请求中使用的cookie。

  • 嗯,是的,我非常需要“ http.getResponseHeader(” Set-Cookie“)”。非常感谢! (2认同)