一、為何要用到setRequestHeader
通常在HTTP協議里,客戶端像服務器取得某個網頁的時候,必須發送一個HTTP協議的頭文件,告訴服務器客戶端要下載什么信息以及相關的參數。而 XMLHTTP 就是通過HTTP協議取得網站上的文件數據的,所以也要發送HTTP頭給服務器。 但是 XMLHTTP 默認的情況下有些參數可能沒有說明在HTTP頭里,這是當我們需要修改或添加這些參數時就用到了
setRequestHeader 方法。
二、setRequestHeader參數詳解
使用GET下列參數 XMLObject.setRequestHeader ("CONTENT-TYPE", "application/x-www-form-urlencoded" ) 代表的意義:
GET /bb.asp?www=1234 HTTP/1.1 Accept: */* Accept-Language: zh-cn UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) CONTENT-TYPE:application/x-www-form-urlencoded Host:ourys.com Connection: close Cookie: %C3%F7%CC%EC=%B0%CB;ASPSESSIONIDASDBSDRR=BLEDBIBBCGKBJAKJCFEJKGII
注: 1、CONTENT-TYPE:application/x-www-form-urlencoded含義是表示客戶端提交給服務器文本內容的編碼方式 是URL編碼,即除了標准字符外,每字節以雙字節16進制前加個“%”表示
2、當然還有其他編碼方式,如:CONTENT-TYPE:multipart/form-data 至於:Content-length 就是表示提交的數據字節大小 http有幾種提交方式,其中比較常用的就是 GET 和 POST
3、這個標志就放在HTTP頭開頭的地方,這樣講容易理解點 GET 方式是沒有提交內容的,所以 Content-length 在 GET 模式下是無效的. GET 傳參數的方式就是通過虛擬地址傳送,如: GET /bb.asp?www=1234 HTTP/1.1 參數全部就只有 "www=1234" 這么多
4、如果用POST的話就有些不同,POST是將參數放到HTTP后面的,就以上面的HTTP作范例,用POST的方法傳參數
POST /bb.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
CONTENT-TYPE:application/x-www-form-urlencoded
Host: ourys.com
Content-length: 8
Connection: close
Cookie: %C3%F7%CC%EC=%B0%CB;ASPSESSIONIDASDBSDRR=BLEDBIBBCGKBJAKJCFEJKGII
www=1234
這時,數據就需要說明字節大小了
至於 Connection: Close,很明顯英文的意思是 連接:關閉 只是客戶端在提交數據時告訴服務器讓誰先關閉連接而已。
三、PS: setRequestHeader方法
PS: setRequestHeader方法只是XMLHTTP為添加或修改HTTP頭提供的一個接口方法而已, 至於里面的值則是HTTP協議的含義,當然也可以發自己的東西進去,即使IIS不能識別你的信息也不會報錯 如: setRequestHeader ("MyName", "Supermanking" )
雖然IIS不會報錯,但這個信息也可以有用,可以在ASP程序里讀取HTTP頭信息分析是否有 MyName: Supermanking 信息,可根據你的需求來做處理