我正在尝试使用 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
非常感谢。
您可以通过
http.getResponseHeader("Set-Cookie")
或解析 http.getAllResponseHeaders()
获得。然后,您应该在下一个请求中通过 http.setRequestHeader "Cookie", "JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Path=/Page"
将 cookie 值添加到请求标头。CreateObject("WinHttp.WinHttpRequest.5.1")
。
只要您使用该对象的同一实例,该对象就会保留以前使用的 cookie。