HTTP深入淺出 http請求

來源:互聯網
上載者:User

標籤:就會   通過   信用卡   有一個   ring   zip   網路購物   url   求和   

HTTP(HyperText Transfer Protocol)是一套電腦通過網路進行通訊的規則。電腦專家設計出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP伺服器(Web伺服器)請求資訊和服務,HTTP目前協議的版本是1.1.HTTP是一種無狀態的協議,無狀態是指Web瀏覽器和Web伺服器之間不需要建立持久的串連,這意味著當一個用戶端向伺服器端發出請求,然後Web伺服器返迴響應(response),串連就被關閉了,在伺服器端不保留串連的有關資訊.HTTP遵循請求(Request)/應答(Response)模型。Web瀏覽器向Web伺服器發送請求,Web伺服器處理請求並返回適當的應答。所有HTTP串連都被構造成一套請求和應答。HTTP使用內容類型,是指Web伺服器向Web瀏覽器返回的檔案都有與之相關的類型。所有這些類型在MIME Internet郵件協議上模型化,即Web伺服器告訴Web瀏覽器該檔案所具有的種類,是HTML文檔、GIF格式映像、音效檔還是獨立的應用程式。大多數Web瀏覽器都擁有一系列的可配置的輔助應用程式,它們告訴瀏覽器應該如何處理Web伺服器發送過來的各種內容類型。HTTP通訊機制是在一次完整的HTTP通訊過程中,Web瀏覽器與Web伺服器之間將完成下列7個步驟:(1)    建立TCP串連在HTTP工作開始之前,Web瀏覽器首先要通過網路與Web伺服器建立串連,該串連是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網路。HTTP是比TCP更高層次的應用程式層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的串連,因此,首先要建立TCP串連,一般TCP串連的連接埠號碼是80(2)    Web瀏覽器向Web伺服器發送請求命令一旦建立了TCP串連,Web瀏覽器就會向Web伺服器發送請求命令例如:GET/sample/hello.jsp HTTP/1.1(3)    Web瀏覽器發送要求標頭資訊瀏覽器發送其請求命令之後,還要以頭資訊的形式向Web伺服器發送一些別的資訊,之後瀏覽器發送了一空白行來通知伺服器,它已經結束了該頭資訊的發送。(4)    Web伺服器應答客戶機向伺服器發出請求後,伺服器會客戶機回送應答,HTTP/1.1 200 OK應答的第一部分是協議的版本號碼和應答狀態代碼(5)    Web伺服器發送應答頭資訊正如用戶端會隨同請求發送關於自身的資訊一樣,伺服器也會隨同應答向使用者發送關於它自己的資料及被請求的文檔。(6)    Web伺服器向瀏覽器發送資料Web伺服器向瀏覽器發送頭資訊後,它會發送一個空白行來表示頭資訊的發送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式發送使用者所請求的實際資料(7)    Web伺服器關閉TCP串連一般情況下,一旦Web伺服器向瀏覽器發送了請求資料,它就要關閉TCP串連,然後如果瀏覽器或者伺服器在其頭資訊加入了這行代碼Connection:keep-aliveTCP串連在發送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的串連發送請求。保持串連節省了為每個請求建立新串連所需的時間,還節約了網路頻寬。    HTTP請求格式當瀏覽器向Web伺服器發出請求時,它向伺服器傳遞了一個資料區塊,也就是請求資訊,HTTP請求資訊由3部分組成:l   要求方法URI協議/版本l   要求標頭(Request Header)l   請求本文下面是一個HTTP請求的例子:GET/sample.jspHTTP/1.1Accept:image/gif.image/jpeg,*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)Accept-Encoding:gzip,deflate username=jinqiao&password=1234 (1)       要求方法URI協議/版本請求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1以上代碼中“GET”代表要求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協議和協議的版本。根據HTTP標準,HTTP請求可以使用多種要求方法。例如:HTTP1.1支援7種要求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應用中,最常用的方法是GET和POST。URL完整地指定了要訪問的網路資源,通常只要給出相對於伺服器的根目錄的相對目錄即可,因此總是以“/”開頭,最後,協議版本聲明了通訊過程中使用HTTP的版本。(2) 要求標頭(Request Header)要求標頭包含許多有關的用戶端環境和請求本文的有用資訊。例如,要求標頭可以聲明瀏覽器所用的語言,請求本文的長度等。Accept:image/gif.image/jpeg.*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)Accept-Encoding:gzip,deflate.(3) 請求本文要求標頭和請求本文之間是一個空行,這個行非常重要,它表示要求標頭已經結束,接下來的是請求本文。請求本文中可以包含客戶提交的查詢字串資訊:username=jinqiao&password=1234在以上的例子的HTTP請求中,請求的本文只有一行內容。當然,在實際應用中,HTTP請求本文可以包含更多的內容。HTTP要求方法我這裡只討論GET方法與POST方法l         GET方法GET方法是預設的HTTP要求方法,我們日常用GET方法來提交表單資料,然而用GET方法提交的表單資料只經過了簡單的編碼,同時它將作為URL的一部分向Web伺服器發送,因此,如果使用GET方法來提交表單資料就存在著安全隱患上。例如Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之後的內容)另外由於GET方法提交的資料是作為URL請求的一部分所以提交的資料量不能太大l         POST方法POST方法是GET方法的一個替代方法,它主要是向Web伺服器提交表單資料,尤其是大批量的資料。POST方法克服了GET方法的一些缺點。通過POST方法提交表單資料時,資料不是作為URL請求的一部分而是作為標準資料傳送給Web伺服器,這就克服了GET方法中的資訊無法保密和資料量太小的缺點。因此,出於安全的考慮以及對使用者隱私的尊重,通常表單提交時採用POST方法。  從編程的角度來講,如果使用者通過GET方法提交資料,則資料存放在QUERY_STRING環境變數中,而POST方法提交的資料則可以從標準輸入資料流中擷取。HTTP應答與HTTP請求相似,HTTP響應也由3個部分構成,分別是:l 協議狀態版本代碼描述l 回應標頭(Response Header)l 響應本文下面是一個HTTP響應的例子:HTTP/1.1 200 OKServer:Apache Tomcat/5.0.12Date:Mon,6Oct2003 13:23:42 GMTContent-Length:112 <html>
<head><title>HTTP響應樣本<title></head><body>Hello HTTP!</body></html>
協議狀態碼描述HTTP響應的第一行類似於HTTP請求的第一行,它表示通訊所用的協議是HTTP1.1伺服器已經成功的處理了用戶端發出的請求(200表示成功):HTTP/1.1 200 OK
回應標頭(Response Header)回應標頭也和要求標頭一樣包含許多有用的資訊,例如伺服器類型、日期時間、內容類型和長度等:   Server:Apache Tomcat/5.0.12Date:Mon,6Oct2003 13:13:33 GMTContent-Type:text/htmlLast-Moified:Mon,6 Oct 2003 13:23:42 GMTContent-Length:112 響應本文響應本文就是伺服器返回的HTML頁面:  <html>
<head><title>HTTP響應樣本<title></head><body>Hello HTTP!</body></html>回應標頭和本文之間也必須用空行分隔。  l        HTTP應答碼   HTTP應答碼也稱為狀態代碼,它反映了Web伺服器處理HTTP請求狀態。HTTP應答碼由3位元字構成,其中首位元字定義了應答碼的類型:   1XX-資訊類(Information),表示收到Web瀏覽器請求,正在進一步的處理中   2XX-成功類(Successful),表示使用者請求被正確接收,理解和處理例如:200 OK      3XX-重新導向類(Redirection),表示請求沒有成功,客戶必須採取進一步的動作。      4XX-用戶端錯誤(Client Error),表示用戶端提交的請求有錯誤 例如:404 NOT                                    Found,意味著請求中所引用的文檔不存在。      5XX-伺服器錯誤(Server Error)表示伺服器不能完成對請求的處理:如 500      對於我們Web開發人員來說掌握HTTP應答碼有助於提高Web應用程式調試的效率和準確性。 安全連線Web應用最常見的用途之一是電子商務,可以利用Web伺服器端程式使人們能夠網路購物,需要指出一點是,預設情況下,通過Internet發送資訊是不安全的,如果某人碰巧截獲了你發給朋友的一則訊息,他就能開啟它,假想在裡面有你的信用卡號碼,這會有多麼糟糕,幸運的是,很多Web伺服器以及Web瀏覽器都有創立安全連線的能力,這樣它們就可以安全的通訊了。通過Internet提供安全連線最常見的標準是安全套接層(Secure Sockets layer,SSl)協議。SSL協議是一個應用程式層協議(和HTTP一樣),用於安全方式在Web上交換資料,SSL使用公開密鑰編碼系統。從本質講,這意味著業務中每一方都擁有一個公開的和一個私人的密鑰。當一方使用另一方公開密鑰進行編碼時,只有擁有匹配密鑰的人才能對其解碼。簡單來講,公開密鑰編碼提供了一種用於在兩方之間交換資料的安全方法,SSL串連建立之後,客戶和伺服器都交換公開密鑰,並在進行業務聯絡之前進行驗證,一旦雙方的密鑰都通過驗證,就可以安全地交換資料。
  • GET
    通過請求URI得到資源
  • POST,
    用於添加新的內容
  • PUT
    用於修改某個內容
  • DELETE,
    刪除某個內容
  • CONNECT,
    用於代理進行傳輸,如使用SSL
  • OPTIONS
    詢問可以執行哪些方法
  • PATCH,
    部分文檔更改
  • PROPFIND, (wedav)
    查看屬性
  • PROPPATCH, (wedav)
    設定屬性
  • MKCOL, (wedav)
    建立集合(檔案夾)
  • COPY, (wedav)
    拷貝
  • MOVE, (wedav)
    移動
  • LOCK, (wedav)
    加鎖
  • UNLOCK (wedav)
    解鎖
  • TRACE
    用於遠端診斷伺服器
  • HEAD
    類似於GET, 但是不返回body資訊,用於檢查對象是否存在,以及得到對象的中繼資料

HTTP深入淺出 http請求

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.