【问题标题】:Retrieiving Cookies and Sending Cookies and Post Variables in VBScript在 VBScript 中检索 Cookie 和发送 Cookie 和发布变量
【发布时间】:2011-09-07 08:55:56
【问题描述】:

我正在尝试使用 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】:

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

    只要您使用相同的实例,它就能够记住之前用于下一个请求的 cookie。

    【讨论】:

    • 啊,是的 "http.getResponseHeader("Set-Cookie")" 这就是我非常需要的。非常感谢!
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 2012-08-29
    • 2012-07-21
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多