首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MSXML2.XMLHTTP vs ServerXMLHTTP:快取機制差異與選型指南

     編輯:Java 相關知識

核心差異

特性Msxml2.XMLHTTPMsxml2.ServerXMLHTTP
快取**有** (預設啟用)**無**
適用端客戶端 (瀏覽器/桌面)伺服器端 (ASP/COM+)
Cookie/Session 自動處理是否 (需手動)
執行緒安全單執行緒單元多執行緒安全

何時用 XMLHTTP?

  • 模擬瀏覽器登入:自動儲存/送出 Cookie、Session,後續請求無需手動處理。
  • 客戶端腳本 (VBScript, JScript, HTA) 需要狀態保持。

何時用 ServerXMLHTTP?

  • 伺服器端排程/服務發送 HTTP 請求。
  • 需**避免快取干擾**(如暴力破解測試、API 壓測、抓取動態資料)。
  • 高併發多執行緒環境。

實務範例 (VBScript)


' 登入並取得受保護頁面 - XMLHTTP 自動處理 Cookie
Set xhr = CreateObject("Msxml2.XMLHTTP")
xhr.open "POST", "https://site.com/login", False
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.send "user=admin&pass=123456"

xhr.open "GET", "https://site.com/secret", False
xhr.send
WScript.Echo xhr.responseText

' 同一腳本換 ServerXMLHTTP 需手動管理 Cookie
Set sxhr = CreateObject("Msxml2.ServerXMLHTTP")
sxhr.open "POST", "https://site.com/login", False
' ... 需自行解析 Set-Cookie 並加入後續請求 Header

快取造成的經典坑

寫 VBS 暴力破解腳本時,若用 XMLHTTP,首次登入成功後快取了 Session,後續嘗試不同密碼卻仍顯示「已登入」,導致判斷邏輯失效。解法:改用 ServerXMLHTTP 或每次請求前清除快取 (無標準 API,建議換物件)。

總結選型口訣

客戶端要狀態、要快取 → XMLHTTP;
伺服器端要乾淨、要併發 → ServerXMLHTTP。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved