1. 程式人生 > >XMLHTTP中setRequestHeader方法和引數

XMLHTTP中setRequestHeader方法和引數

注意:在FF裡面需要將open方法放在setRequestHeader之前

一、為何要用到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方法只是XMLHTTP為新增或修改HTTP頭提供的一個介面方法而已,
至於裡面的值則是HTTP協議的含義,當然也可以發自己的東西進去,即使IIS不能識別你的資訊也不會報錯
如:
setRequestHeader ("MyName", "Supermanking" )

雖然IIS不會報錯,但這個資訊也可以有用,可以在ASP程式裡讀取HTTP頭資訊分析是否有
MyName: Supermanking
資訊,可根據你的需求來做處理.


原文地址:https://blog.csdn.net/u012028371/article/details/67636395