1. HTTP協議有哪幾種方式
客戶程序向伺服器發送的請求可以有不同的類型,這樣伺服器可以根據不同的請求類型進行不同的處理。在HTTP1.0中,定義了三種最基本的請求類 型,GET、POST和HEAD,客戶程序用大寫指令將請求發送給伺服器,後面跟隨具體的數據。
其中,HEAD請求在客戶程序和伺服器之間進行交流,而不會返回具體的文檔。當使用GET和POST方法時,伺服器最後都將結果文檔返回給客戶程序,瀏覽器將 刷新顯示。而HEAD請求則不同,它僅僅交流一些內部數據,這些數據不會影響瀏覽的過程。因此HEAD方法通常不單獨使用,而是和其他的請求方法一起起到 輔助作用。一些搜尋引擎使用的自動搜索機器人使用這個方法來獲得網頁的標志信息,或者進行安全認證時,使用這個方法來傳遞認證信息。
除了這三種最常見的訪問方法之外,在HTTP1.1中還定義了更多的訪問方法類型,如PUT,用於將網頁放置到正確位置,DELETE用於刪除相關文檔 等。這些方法並不常用,因而大部分Web伺服器軟體並沒有實現他們。然而對於特定場合他們還是非常有用的,例如使用軟體編輯網頁時,網頁編輯器可以使用這 些方法,管理不同的網頁。
如果伺服器不支持客戶發送的請求方法,伺服器將返回錯誤並立即關閉連接。
2. HTTP 協議都有哪些規則
客戶程序向伺服器發送的請求可以有不同的類型,這樣伺服器可以根據不同的請求類型進行不同的處理。在HTTP1.0中,定義了三種最基本的請求類 型,GET、POST和HEAD,客戶程序用大寫指令將請求發送給伺服器,後面跟隨具體的數據。
其中,HEAD請求在客戶程序和伺服器之間進行交流,而不會返回具體的文檔。當使用GET和POST方法時,伺服器最後都將結果文檔返回給客戶程序,瀏覽器將 刷新顯示。而HEAD請求則不同,它僅僅交流一些內部數據,這些數據不會影響瀏覽的過程。因此HEAD方法通常不單獨使用,而是和其他的請求方法一起起到 輔助作用。一些搜尋引擎使用的自動搜索機器人使用這個方法來獲得網頁的標志信息,或者進行安全認證時,使用這個方法來傳遞認證信息。
除了這三種最常見的訪問方法之外,在HTTP1.1中還定義了更多的訪問方法類型,如PUT,用於將網頁放置到正確位置,DELETE用於刪除相關文檔 等。這些方法並不常用,因而大部分Web伺服器軟體並沒有實現他們。然而對於特定場合他們還是非常有用的,例如使用軟體編輯網頁時,網頁編輯器可以使用這 些方法,管理不同的網頁。
如果伺服器不支持客戶發送的請求方法,伺服器將返回錯誤並立即關閉連接
3. HTTP協議功能有哪些
HTTP是超文本轉移協議,是客戶端瀏覽器或其他程序與Web伺服器之間的應用層通信協議。在Internet上的Web伺服器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他網際網路/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。
當我們想瀏覽一個網站的時候,只要在瀏覽器的地址欄里輸入網站的地址就可以了,例如www.abc.com,但是在瀏覽器的地址欄裡面出現的卻是:http://www.abc.com ,你知道為什麼會多出一個「http」嗎? 我們在瀏覽器的地址欄里輸入的網站地址叫做URL (Uniform Resource Locator,統一資源定位符)。就像每家每戶都有一個門牌地址一樣,每個網頁也都有一個Internet地址。當你在http功用瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本轉移協議(HTTP),將Web伺服器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。因此,在我們認識HTTP之前,有必要先弄清楚URL的組成,例如:http://www.abc.com/china/index.htm。
4. http的常用的請求頭是哪幾個
首先,什麼是請求頭?
這里指的是HTTP 1 版本中的請求信息的頭部內容,注意,不含主體
http請求信息由請求方法、請求頭和請求文本三部分組成。
第一,BasicAuth
這是一種不安全的用戶驗證方法,通常受到用戶授權的限制。用戶名密碼(明文)將被添加到headers的Autheration欄位中。如果驗證失敗,請求將失敗。現在這種認證方法正在被淘汰。
第二、Referer
鏈接的來源通常在訪問鏈接時帶有Refer欄位,伺服器驗證來源,後台通常使用該欄位作為防盜鏈的依據。
第三、User-Agent
後台通常通過這個欄位來判斷用戶設備的類型、系統和瀏覽器的版本。一些編程語言包中的網路請求可以定製User-Agent,並且可以在爬蟲中設置為瀏覽器的ua
第四,Cookie
一般而言,在用戶登錄或某些操作之後,伺服器端會在返回包中包含Cookie信息,要求瀏覽器設置Cookie,沒有Cookie很容易被識別為偽造請求;還有本地通過JS,根據伺服器端返回的某一信息處理生成的加密信息,設置在Cookie中
第五,JavaScript加密操作
在傳輸敏感數據時,通常通過javascript加密。例如,qq空間將RSA加密用戶登錄密碼,然後發送到伺服器。因此,爬蟲需要在模擬登錄時要求公鑰並加密。
第六,定製欄位
由於http的headers可以定製地段,因此第三方可能會添加一些定製的欄位名或欄位值,這也是需要注意的。
5. 在HTTP中,常用的請求方式有哪幾種這幾種方式各自的傳值代碼怎麼寫(asp.net環境)
傳值方式不外乎就通過URL(get)來取值
通過表單post傳值
通過session和cookies 這幾種
6. http有哪些請求方法
常用的有 GET 和 POST, 如果支持restful風格的話,還有PUT 和 DELETE 方法
7. http協議的詳細描述
HTTP的早期版本為HTTP/0.9,它適用於各種數據信息的簡潔快速協議,但是其遠不能滿足日益發展各種應用的需要。但HTTP/0.9作為HTTP協議具有典型的無狀態性:每個事務都是獨立進行處理的,當一個事務開始就在客戶與伺服器之間建立一個連接,當事務結束時就釋放這個連接。HTTP/0.9包含
Simple-Request&Simple-Responsed的報文結構。但是客戶無法使用內容協商,所以伺服器也無法返回實體的媒體類型。
1982年,Tim Berners-Lee提出了HTTP/1.0,在此後的不斷豐富和發展中,HTTP/1.0成為最重要的面向事務的應用層協議。該協議對每一次請求/響應,建立並拆除一次連接。其特點是簡單、易於管理,所以它符合了大家的需要,得到了廣泛的應用。其缺點是仍會發生下列問題:對用戶請求響應慢、網路擁塞嚴重、安全性等。
1997年形成的HTTP/1.1,也就是現在普遍使用的協議,在持續連接操作機制中實現流水方式,即客戶端需要對同一伺服器發出多個請求時,其實現在多數的網頁都是有多部分組成(比如多張圖片),可用流水線方式加快速度,流水機制就是指連續發出多個請求並等到這些請求發送完畢,再等待響應。這樣就大大節省了單獨請求對響應的等待時間,使我們得到更快速的瀏覽。
另外,HTTP/1.1伺服器端處理請求時按照收到的順序進行,這就保證了傳輸的正確性。當然,伺服器端在發生連接中斷時,會自動的重傳請求,保證數據的完整性。
HTTP/1.1還提供了身份認證、狀態管理和Cache緩存等機制。這里,我想特別提一下關於HTTP/1.1中的Cache緩存機制對HTTP/1.0的不足之處的改進,它嚴格全面,既可以減少時間延遲、又節省了帶寬。HTTP/1.1採用了內容協商機制,選擇最合適的用戶的內容表現形式。
現在,很多地方都有用到的虛擬主機技術在HTTP/1.1中也可以實現。所謂的虛擬主機技術,就是同一主機地址實際對應多台主機。通俗的講,當你同時在一個網站申請兩個主頁時,用協議分析儀可以發現其實這兩個主頁對應的是同一個IP地址。這樣用多台完全相同的機器形成WWW伺服器就可以提高處理的吞吐量。
傳統的解決方案是改造域名伺服器使其可以根據一定的演算法將同一域名解釋成不同的IP地址。分別對應虛擬主機的每台機器,其缺點是要求每台機器佔用完全獨立的IP地址,這與IP地址的缺乏是相矛盾的。
HTTP/1.1提供的解決方案在HTTP協議自身中加入了指定不同主機的功能,從而多台主機可以共享一個IP地址,既提高了性能又便於管理。
因為HTTP/1.1是Internet現行的標准協議,這里詳細介紹其相關語法。
首先,HTTP/1.1格式可寫為:
[img:8d94cc43ef]http://www.china-pub.com/computers/emook/0472/1.gif[/img:8d94cc43ef]
其中請求方法是請求一定的Web頁面的程序或用於特定的URL。可選用下列幾種:
GET: 請求指定的頁面信息,並返回實體主體。
HEAD: 只請求頁面的首部。
POST: 請求伺服器接受所指定的文檔作為對所標識的URI的新的從屬實體。
PUT: 從客戶端向伺服器傳送的數據取代指定的文檔的內容。
DELETE: 請求伺服器刪除指定的頁面。
OPTIONS: 允許客戶端查看伺服器的性能。
TRACE: 請求伺服器在響應中的實體主體部分返回所得到的內容。
PATCH: 實體中包含一個表,表中說明與該URI所表示的原內容的區別。
MOVE: 請求伺服器將指定的頁面移至另一個網路地址。
COPY: 請求伺服器將指定的頁面拷貝至另一個網路地址。
LINK: 請求伺服器建立鏈接關系。
UNLINK: 斷開鏈接關系。
WRAPPED: 允許客戶端發送經過封裝的請求。
Extension-mothed:在不改動協議的前提下,可增加另外的方法。
比如:
GET /index.html HTTP/1.1
Accept: text/plain /*純ASCII碼文本文件*/
Accept: text/html /*HTML文本文件*/
User-Agent:Mozilla/4.5(WinNT)
說明瀏覽器使用Get方法請求文檔/index.html。瀏覽器則只允許接收純ASCII碼文本文件和HTML文本文件,其使用的引擎是Mozilla/4.5(Netscape)。
當伺服器響應時,其狀態行的信息為HTTP的版本號,狀態碼,及解釋狀態碼的簡單說明。現將5類狀態碼詳細列出:
① 客戶方錯誤
100 繼續
101 交換協議
② 成功
200 OK
201 已創建
202 接收
203 非認證信息
204 無內容
205 重置內容
206 部分內容
③ 重定向
300 多路選擇
301 永久轉移
302 暫時轉移
303 參見其它
304 未修改(Not Modified)
305 使用代理
④ 客戶方錯誤
400 錯誤請求(Bad Request)
401 未認證
402 需要付費
403 禁止(Forbidden)
404 未找到(Not Found)
405 方法不允許
406 不接受
407 需要代理認證
408 請求超時
409 沖突
410 失敗
411 需要長度
412 條件失敗
413 請求實體太大
414 請求URI太長
415 不支持媒體類型
⑤ 伺服器錯誤
500 伺服器內部錯誤
501 未實現(Not Implemented)
502 網關失敗
504 網關超時
505 HTTP版本不支持
比如:(在《TELNET……》一文中用telnet登陸80埠,相同的方法用在HTTP/1.1中,會發現沒有顯示,下面補充說明之)
telnet www.fudan.e.cn 80
HEAD / HTTP/1.1
host:www.fudan.e.cn /*本行為輸入內容*/
HTTP/1.1 501 Method Not Implemented
Date: Web, 01 Nov 2000 07:12:29 GMT /*當前的日期/時間*/
Server: Apache/1.3.12 (Unix) /*Web伺服器信息*/
Allow: GET, HEAD, OPTION, TRACE /*支持的方法類型*/
Connection: close
Connect-Type: Text/html; charset=iso-8859-1/*連接的媒體類型*/
<!DOCTYPE HTML PUBLIG "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method
Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
head to /inde
x.html not supported.<P>
Invalid method in request head / htp/1.1<P>
<HR>
<ADDRESS>
Apache/1.3.12 Server at www.fudan.e.cn Port 80</ADDRESS>
</BODY></HTML>
關於實體頭部的內容還可以有:
Last Modified :請求文檔的最近修改時間。
Expires :請求文檔的過期時間。
Connect-length:文檔數據的長度。
WWW-authenricate:通知客戶端需要的認證信息。
Connect-encoding :說明有無使用壓縮技術。
Transfer-encoding :說明採用的編碼變換類型。
隨著Internet的發展,下一代的HTTP協議HTTP-ng已經在醞釀之中,它將會提供更好的安全性、更快的速度,其改進要點為:模塊化強、網路效率高、安全性更好、結構更簡單。
8. HTTP協議中請求方法Get和Post的區別是什麼
在瀏覽器中輸入網址訪問資源都是通過GET方式;在FORM提交中,可以通過Method指定提交方式為GET或者POST,默認為GET提交。
HTTP 定義了與伺服器交互的不同方法,最常用的有4種,Put(增),Delete(刪),Post(改),Get(查),即增刪改查:
1)Get,
它用於獲取信息,注意,他只是獲取、查詢數據,也就是說它不會修改伺服器上的數據,從這點來講,它是數據安全的,而稍後會提到的Post它是可以修改數據的,所以這也是兩者差別之一了。
2)
Post,它是可以向伺服器發送修改請求,從而修改伺服器的,比方說,我們要在論壇上回貼、在博客上評論,這就要用到Post了,當然它也是可以僅僅獲取數據的。
3)Delete 刪除數據。可以通過Get/Post來實現。
4)Put,增加、放置數據,可以通過Get/Post來實現。
根據HTTP規范,GET用於信息獲取,而且應該是安全的和冪等的 。
1.所謂安全的意味著該操作用於獲取信息而非修改信息。換句話說,GET請求一般不應產生副作用。就是說,僅僅是獲取資源信息,就像資料庫查詢一樣,不會修改,增加數據,不會影響資源的狀態。(注意:這里安全的含義僅僅是指是非修改信息。)
根據HTTP規范,POST表示可能修改變伺服器上的資源的請求
。繼續引用上面的例子:還是新聞以網站為例,讀者對新聞發表自己的評論應該通過POST實現,因為在評論提交後站點的資源已經不同了,或者說資源被修改了。
HTTP請求:在HTTP請求中,第一行必須是一個請求行(request
line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接著是一個首部(header)小節,用來說明伺服器要使用的附加信息。在首部之後是一個空行,再此之後可以添加任意的其他數據[稱之為主體(body)]。
兩種提交方式的區別:
(1)GET提交,請求的數據會附在URL之後(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,多個參數用&連接。如果數據是英文字母/數字,原樣發送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字元串用BASE64加密,得出如:
%E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進製表示的ASCII。
POST提交:把提交的數據放置在是HTTP包的包體中。上文示例中紅色字體標明的就是實際的傳輸數據
因此,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變
(2)傳輸數據的大小:首先聲明:HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規范也沒有對URL長度進行限制。
而在實際開發中存在的限制主要有:
GET:特定瀏覽器和伺服器對URL長度有限制,例如IE對URL長度的限制是2083位元組(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限製取決於操作系統的支持。
因此對於GET提交時,傳輸數據就會受到URL長度的限制。
POST:由於不是通過URL傳值,理論上數據不受限。但實際各個WEB伺服器會規定對post提交數據大小進行限制,Apache、IIS6都有各自的配置。
9. 網路編程什麼是http協議http常用的請求方法是什麼
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。