我對任何形式的幫助,可以幫助我解決這個問題,萬分感謝。不理解爲什麼WinHTTP不能驗證某些HTTPS資源
從Excel VBA代碼我需要下載&從HTTPS網站https://redmine.itransition.com/解析CSV文件。我嘗試使用WinHTTP來獲取文件。但是,我不明白爲什麼認證不起作用。下面是一段相關代碼:
TargetURL = "https://redmine.itransition.com/projects/pmct/time_entries.csv"
Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1")
HTTPReq.Option(4) = 13056 ' WinHttpRequestOption_SslErrorIgnoreFlags 13056: ignore all err, 0: accept no err
HTTPReq.Open "GET", TargetURL, False
HTTPReq.SetCredentials "UN", "PW", 0
HTTPReq.send
返回以下響應(只有某些字符串列出):
Content-Type: text/html; charset=utf-8
Status: 406
X-Runtime: 5
但是,如果我成功的人工驗證後從Firefox發送cookie「曲奇」串使用
HTTPReq.setRequestHeader "Cookie", SetCookieString
HTTPReq.send
我很容易得到預期的文件。當然,我對這樣的解決方案並不滿意,並且想要執行真正的WinHTTP身份驗證。但是,我不明白什麼是錯的,或者我在代碼中錯過了什麼。最有可能我不得不使用.SetClientCertificate
方法,但不清楚這個對我來說 - 這證書是必需的?
或者,更加一般:它WinHTTP的方法或函數應該使用調試找出哪些步驟是阻止/不正確的,讓我無法正確的驗證?我花了2周的時間尋求通過MSDN和各種資源,但仍然沒有解決方案。
在此先感謝您的建議!
也許可以幫助:我需要驗證管理平臺實例(見http://www.redmine.org/更多),VER。 1.0.1(相當古老)。 –
的406 HTTP狀態代碼不涉及到身份驗證 - 你應該得到一個401或407的代碼,如果需要認證。 406是 - 「406不可接受:由請求標識的資源只能根據請求中發送的接受標頭生成具有不可接受的內容特徵的響應實體」 - 見http://www.w3.org/Protocols /rfc2616/rfc2616-sec10.html – barrowc
@barrowc感謝您的亮點!實際上,406與auth根本無關 - 在我的上下文中,它意味着我收到的響應不同於200/OK,這是從瀏覽器使用cookie字符串時得到的。還有一個比較有用的鏈接! –