日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Http協議詳解

Http協議詳解

來源:程序員人生   發布時間:2014-10-02 08:00:00 閱讀次數:2988次

HTTP協議即超文本傳輸協議,這個協議詳細規定了瀏覽器和萬維網之間互相通信的規則。HTTP協議就是一個通信的規則,通信規則規定了客戶端發送給服務器的內容格式,也規定了服務器發送給客戶端的內容格式。其實我們要學的就是這兩種格式。客戶端發送給服務器的格式叫做請求協議,服務器發送給客戶端的叫做響應協議。

一、請求協議

請求協議的格式如下:
請求首行;
請求頭信息;
空行;
請求體;
瀏覽器發送給服務器的內容就是這個格式的。如果不是這個格式,服務器不會解讀。在HTTP協議中,請求有很多方法,其中最常見的就是post和get方法。不同的方法會有所區別。我們可以通過HttpWatch觀察到瀏覽器與服務器之間的請求信息和響應欣喜的格式。

GET請求
在myeclipse中創建一個web工程,在地址欄中輸入訪問地址:http://127.0.0.1:8080/HttpDemo/index.jsp之后,我們可以在Chrome中查看瀏覽器向服務器發送的get請求,請求的格式如下所示:

GET /HttpDemo/index.jsp?userName=min&password=lingchao HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Referer: http://127.0.0.1:8080/HttpDemo/index.jsp
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=57C3302F3350676F65B5E4409ABA87CF

  • GET /HttpDemo/index.jsp?userName=min&password=lingchao HTTP/1.1:GET請求,請求的路徑為 /HttpDemo/index.jsp?userName=min&password=lingchao,協議及版本為:HTTP/1.1
  • Host: 127.0.0.1:8080:請求的主機名為127.0.0.1:8080
  • User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.198:與瀏覽器和操作系統有關的信息,有些網站會顯示用戶的系統版本和瀏覽器的版本信息,這都是通過獲取該頭部得到的。
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8:告訴服務器當前客戶端可以接收的文檔的類型。其實這里包含了*/*,就表示什么都可以接收;
  • Accept-Language: zh-CN,zh;q=0.8:當前客戶端可以支持的語言,在瀏覽器的工具->選項中可以得到相關信息
  • Accept-Encoding: gzip,deflate,sdch:客戶端支持的編碼
  • Connection: keep-alive:客戶端支持的連接方式,保持一段連接,默認為3000ms
  • Cookie: JSESSIONID=57C3302F3350676F65B5E4409ABA87CF:因為不是第一次訪問這個地址,所以在請求上會把上一次服務器響應中發送過來的Cookie在請求中一并發送過去。

POST請求

POST /HttpDemo/index.jsp HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Content-Length: 28
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1:8080/HttpDemo/index.jsp
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=57C3302F3350676F65B5E4409ABA87CF


POST請求時可以有體的,而GET請求不能有請求體。
  • Referer: http://127.0.0.1:8080/HttpDemo/index.jsp:請求來自哪個頁面,例如在百度上點擊鏈接到了這里,那么Referer:http://www.baidu.com;如果你是在瀏覽器的地址欄里輸入,那么久沒有這個Referer請求頭了
  • Content-Type: application/x-www-form-urlencoded:表單的數據類型,說明會使用url編碼。url編碼的數據都是以“%”為前綴,后面跟隨兩位的16進制
  • Content-Length: 28:請求體的長度,這里表示28個字節
  • userName=min&password=111217:請求題內容,hello是在表單中輸入的數據。userName,password是表單字段的名字,=后面是輸入的數據,多個字段中間使用&連接
Referer請求頭是比較有用的一個請求頭,它可以用來做統計工作,也可以用來做防盜鏈。
統計工作:我公司網站在百度上做了廣告,但不知道在百度上做廣告對我們網站的訪問量是否有影響,那么可以對每個請求中的Referer進行分析,如果Referer為百度的很多,那么說明用戶都是通過百度找到我們公司網站的。
防盜鏈:我公司網站上有一個下載鏈接,而其他網站盜鏈了這個地址,例如在我網站上的index.html頁面中有一個鏈接,點擊即可下載JDK7.0,但有某個人的微博中盜鏈了這個資源,它也有一個鏈接指向我們網站的JDK7.0,也就是說登錄它的微博,點擊鏈接就可以從我網站上下載JDK7.0,這導致我們網站的廣告沒有看,但下載的卻是我網站的資源。這時可以使用Referer進行防盜鏈,在資源被下載之前,我們對Referer進行判斷,如果請求來自本網站,那么允許下載,如果非本網站,先跳轉到本網站看廣告,然后再允許下載。

二、響應協議

響應協議的格式如下:
響應首行;
響應頭信息;
空行;
響應體;

響應內容是由服務器發送給瀏覽器的內容,瀏覽器會根據響應內容來顯示。

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 809
Date: Sat, 27 Sep 2014 06:04:21 GMT


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="http://127.0.0.1:8080/HttpDemo/">
    
    <title>My JSP 'index.jsp' starting page</title>
<span style="white-space:pre"> </span><meta http-equiv="pragma" content="no-cache">
<span style="white-space:pre"> </span><meta http-equiv="cache-control" content="no-cache">
<span style="white-space:pre"> </span><meta http-equiv="expires" content="0">    
<span style="white-space:pre"> </span><meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<span style="white-space:pre"> </span><meta http-equiv="description" content="This is my page">
<span style="white-space:pre"> </span><!--
<span style="white-space:pre"> </span><link rel="stylesheet" type="text/css" href="styles.css">
<span style="white-space:pre"> </span>-->
  </head>
  
  <body>
    <form action="index.jsp" method="post">
       UserName:<input name="userName" id="userName">
       Password:<input name="password" id="password">
       <button type="submit">Submit </button>
    </form>
  </body>
</html>



HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態碼為200,表示請求成功,OK是對狀態碼的解釋;
Server: Apache-Coyote/1.1:服務器的版本信息;
Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8;
Content-Length: 724:響應體為724字節;
Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:響應給客戶端的Cookie;
Date: Wed, 25 Sep 2012 04:15:03 GMT:響應的時間,這可能會有8小時的時區差;


GET和POST的區別

  • get是從服務器上獲取數據而post是向服務器傳送數據
  • get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中。值和表單中相應的字段一一對應,在URL中可以看到。post是通過HTTP 的post機制,將表單中各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程
  • 對于get方式,服務器端用requestQueryString獲取變量的值。對于post方式服務器用Request.form獲取提交數據
  • get傳輸的數據量較小,不能大于2kb,post傳輸的數據量比較大,一般默認為不受限制。但是理論上,IIS4中最大量為80kb,IIS5中最大量為100kb
  • get安全性非常低,post安全性較高。但是執行效率卻比post方法好。

響應碼

響應碼對于瀏覽器來說,很重要,它說明了響應的真正含義。例如200表示請求成功,302表示重定向,這說明瀏覽器需要再發送一個新的請求。

  • 200:請求成功,瀏覽器會把響應體的內容(通常是html顯示在瀏覽器中
  • 404:請求的資源沒找到,說明客戶端錯誤的請求了不存在的資源。
  • 500:請求的資源找到了,但是服務器內部出現了錯誤
  • 302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新發送一個請求,服務器會發送一個響應頭Location,它指定了請求的URL地址
  • 304:當用戶第一次請求index.html時,服務器會添加一個名字為Last-Modified響應頭,這個響應頭說明了index.html的最后修改時間,瀏覽器會把index.html內容,以及最后響應時間緩存下來。當用戶第二次請求index.html時,在請求中包含一個名為if-Modified-Since請求頭,它的值就是第一次請求時服務器通過Last-Modified響應頭發給瀏覽器的值,即index.htmI最后的修改時間,If-Modified-Since請求頭就是在告訴服務器,我這里瀏覽器緩存的index.html最后修改時間是這個,您看看現在的index.html最后修改時間是不是這個,如果還是,那么您就不用再響應這個index.html內容了,我會把緩存的內容直接顯示出來。而服務器端會獲取If-Modified-Since值,與index.html的當前最后修改時間比對,如果相同,服務器會發響應碼304,表示index.html與瀏覽器上次緩存的相同,無需再次發送,瀏覽器可以顯示自己的緩存頁面,如果比對不同,那么說明index.html已經做了修改,服務器會響應200。
響應頭:
Last-Modified:最后的修改時間;
請求頭:
If-Modified-Since:把上次請求的index.html的最后修改時間還給服務器;
狀態碼:304,比較If-Modified-Since的時間與文件真實的時間一樣時,服務器會響應304,而且不會有響正文,表示瀏覽器緩存的就是最新版本!

其它響應頭

告訴瀏覽器不要緩存的響應頭:
Expires: -1;
Cache-Control: no-cache;
Pragma: no-cache;

自動刷新響應頭,瀏覽器會在3秒之后請求http://www.itcast.cn:

Refresh: 3;url=http://www.itcast.cn

HTML中指定響應頭


在HTMl頁面中可以使用<meta http-equiv="" content="">來指定響應頭,例如在index.html頁面中給出<meta http-equiv="Refresh" content="3;url=http://www.itcast.cn">,表示瀏覽器只會顯示index.html頁面3秒,然后自動跳轉到http://www.itcast.cn。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 99久久久久久 | 日本不卡久久 | 91精品国产欧美一区二区 | 黄色三级网站 | 综合av第一页 | 成人一区二 | 日韩一区二区在线视频 | 国产午夜精品一区二区三区四区 | 蜜桃在线一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 精品一区二区三区在线观看国产 | 天天干夜夜操 | 国产精品久久久久久久久久久久冷 | 国产精品三级在线 | av一区二区三区 | 99精品视频在线免费观看 | 国产99视频精品免视看9 | 日韩一区二区精品视频 | 成人观看 | 欧美精品1区2区3区 日本特黄a级高清免费大片 | 久久久精 | 国产激情视频在线观看 | 一区二区国产精品 | 亚洲综合二 | 午夜精品久久久久久久96蜜桃 | 国产精品爱久久久久久久 | 日本免费高清一区 | 精品一区二区免费 | av五月 | 性高潮网站| 日韩免费精品视频 | 日在线视频 | 黄色网页免费看 | 欧美日韩999| 黄色小视频免费 | 欧美激情精品久久久久久变态 | 国产精品第52页 | 久久久久久国产精品免费免费 | 国产精品久久久久久久久久免费看 | 免费一区二区三区 | 在线观看av一区 |