【问题标题】:VBA Microsoft.XMLHTTP setRequestHeader not sending cookieVBA Microsoft.XMLHTTP setRequestHeader 不发送 cookie
【发布时间】:2021-03-17 11:42:03
【问题描述】:

我的 VBA 代码发送除 Cookie 信息之外的所有标头。

Dim oXMLHttpRequest As Object
Set oXMLHttpRequest = CreateObject("Microsoft.XmlHttp")
oXMLHttpRequest.setRequestHeader "Accept", "text/html, application/xhtml+xml, */*"
oXMLHttpRequest.setRequestHeader "Accept-Language", "ko-KR"
oXMLHttpRequest.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
oXMLHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXMLHttpRequest.setRequestHeader "Accept-Encoding", "gzip, deflate"
oXMLHttpRequest.setRequestHeader "Connection", "Keep-Alive"
oXMLHttpRequest.setRequestHeader "DNT", "1"
oXMLHttpRequest.setRequestHeader "Cookie", "xxx=yyy"
oXMLHttpRequest.send[enter image description here][1]

正如您在下面的捕获链接中看到的那样,缺少 Cookie: xxx=yyy.. 我没有任何线索。请帮我。 谢谢。

Fiddler 捕获:

【问题讨论】:

    标签: vba excel http cookies


    【解决方案1】:

    Google 上有一个rumour,您必须在此处使用 WinHTTP 对象而不是 MSXML2。例如:

    Option Explicit
    
        Sub Test()
    
            Dim objRequest As Object
            Dim strResponse As String
            Dim blnAsync  As Boolean
    
            Set objRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
            blnAsync = True
    
            With objRequest
                .Open "POST", "http://www.comparity.net/perl/form.pl", blnAsync
                .setRequestHeader "Cookie", "timtam=penguin"
                .send
                .WaitForResponse
                strResponse = .responseText
                Debug.Print strResponse
                Debug.Print .Status
            End With
    
        End Sub
    

    【讨论】:

    • 这不仅仅是谣言。出于安全原因,MSXML 会剥离响应并删除 cookie。
    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 2015-01-09
    • 2012-04-14
    • 2013-09-24
    • 2016-12-23
    • 2010-09-30
    • 2018-05-23
    • 2011-10-19
    相关资源
    最近更新 更多