<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HTTP權威指南閱讀筆記三:HTTP報文

        報文的組成部分

        報文由三部分組成:對報文進行描述的起始行(start line)、包含屬性的首部(header),以及可選的、包含數據的主體(body)部分。

       

        請求報文格式

        <method> <request-URL> <version>

        <headers>

        <entity-body>

       

        響應報文格式

        <version> <status> <reson-phrase>

        <headers>

        <entity-body>

       

        HTTP方法

        主要的HTTP方法有:

      方法 描述 是否包含主體
      GET 從服務器獲取一份文檔
      HEAD 只從服務器獲取文檔的首部
      POST 向服務器發送需要處理的數據
      PUT 將請求的主體部分存儲在服務器上
      TRACE 對可能經過代理服務器傳送到服務器上去的報文進行追蹤
      OPTIONS 決定可以在服務器上執行哪些方法
      DELETE 從服務器上刪除一份文檔

        另外,HTTP1.1允許擴展規范中沒有的方法。

       

        示例

        js部分:

      var httpMethodTest = (function () {
          "use strict";
      
          var _xhr = new XMLHttpRequest();
      
          var _sendXHR = function (method, url, callback) {
              _xhr.onreadystatechange = function () {
                  if (_xhr.readyState === 4 && _xhr.status === 200) {
                      callback(_xhr);
                  }
              };
      
              _xhr.open(method, url, true);
              _xhr.send('');
          };
      
      
          var get = function (url, callback) {
              _sendXHR("GET", url, callback);
          };
      
          var put = function (url, callback) {
              _sendXHR("PUT", url, callback);
          };
      
          var post = function (url, callback) {
              _sendXHR("POST", url, callback);
          };
      
          var head = function (url, callback) {
              _sendXHR("HEAD", url, callback);
          };
      
          var trace = function (url, callback) {
              _sendXHR("TRACE", url, callback);
          };
      
          var options = function (url, callback) {
              _sendXHR("OPTIONS", url, callback);
          };
      
          var deleteMethod = function (url, callback) {
          };
      
          return {
              get: get,
              put: put,
              post: post,
              head: head,
              trace: trace,
              options: options,
              deleteMethod: deleteMethod
          };
      })();
      
      
      var btnGET = document.getElementById("btnGET"),
          btnPOST = document.getElementById("btnPOST"),
          btnPUT = document.getElementById("btnPUT"),
          btnHEAD = document.getElementById("btnHEAD"),
          btnOPTIONS = document.getElementById("btnOPTIONS"),
          btnTRACE = document.getElementById("btnTRACE"),
          headerResultNode = document.getElementById("headerResult"),
          bodyResultNode = document.getElementById("bodyResult"),
          headerTitleNode = document.getElementById("headerTitle"),
          bodyTitleNode = document.getElementById("bodyTitle");
      btnGET.onclick = function () {
          headerTitleNode.innerHTML = "GET Response Headers:";
          bodyTitleNode.innerHTML = "GET Response Body:";
          httpMethodTest.get("/home/Test?t=" + Math.random(), methodResult);
      }
      
      btnPOST.onclick = function () {
          headerTitleNode.innerHTML = "POST Response Headers:";
          bodyTitleNode.innerHTML = "POST Response Body:";
          httpMethodTest.post("/home/Test?t=" + Math.random(), methodResult);
      }
      
      btnPUT.onclick = function () {
          headerTitleNode.innerHTML = "PUT Response Headers:";
          bodyTitleNode.innerHTML = "PUT Response Body:";
          httpMethodTest.put("/home/Test?t=" + Math.random(), methodResult);
      }
      
      btnHEAD.onclick = function () {
          headerTitleNode.innerHTML = "HEAD Response Headers:";
          bodyTitleNode.innerHTML = "HEAD Response Body:";
          httpMethodTest.head("/home/Test?t=" + Math.random(), methodResult);
      }
      
      //由于ajax中不可以直接發trace請求,所以這里改為發get請求,然后在controller中作代理發trace請求
      btnTRACE.onclick = function () {
          headerTitleNode.innerHTML = "TRACE Response Headers:";
          bodyTitleNode.innerHTML = "TRACE Response Body:";
          httpMethodTest.get("/home/Trace?url=" + encodeURIComponent("http://xxxxx/test.php") + "&t" + Math.random(), methodResult);
      }
      
      btnOPTIONS.onclick = function () {
          headerTitleNode.innerHTML = "OPTIONS Response Headers:";
          bodyTitleNode.innerHTML = "OPTIONS Response Body:";
          httpMethodTest.options("/home/Test?t=" + Math.random(), methodResult);
      }
      
      //從XMLHttpRequest中取出Header及Body數據
      function methodResult(xhr) {
          var header = {},
              response = "",
              results = [];
          header["status"] = xhr.status;
          header["statusText"] = xhr.statusText;
          header["Cache-Control"] = xhr.getResponseHeader("Cache-Control");
          header["Content-Type"] = xhr.getResponseHeader("Content-Type");
          header["Allow"] = xhr.getResponseHeader("Allow");
          header["Content-Encoding"] = xhr.getResponseHeader("Content-Encoding");
          header["Vary"] = xhr.getResponseHeader("Vary");
          header["Server"] = xhr.getResponseHeader("Server");
          header["Date"] = xhr.getResponseHeader("Date");
          header["Content-Length"] = xhr.getResponseHeader("Content-Length");
          for (var key in header) {
              if (header[key]) {
                  results.push("<li>" + key + ": " + header[key] + "</li>");
              }
          }
          headerResultNode.innerHTML = results.join("");
          bodyResultNode.value = xhr.responseText;
      }

        頁面部分:

      <div>
          <input type="button" id="btnGET" value="GET" />
          <input type="button" id="btnPOST" value="POST" />
          <input type="button" id="btnPUT" value="PUT" />
          <input type="button" id="btnHEAD" value="HEAD" />
          <input type="button" id="btnTRACE" value="TRACE" />
          <input type="button" id="btnOPTIONS" value="OPTIONS" />
      </div>
      <h3 id="headerTitle">Response Headers:</h3>
      <ul id="headerResult" class="list-txt">
      
      </ul>
      <h3 id="bodyTitle">Response Body:</h3>
      <textarea id="bodyResult" class="list-txt" rows="5" disabled="disabled"></textarea>

        controller中發送trace請求: 

      public void Test()
      {
          Response.ClearContent();
          if (Request.HttpMethod.Equals("OPTIONS"))
          {
              Response.AddHeader("Allow", "GET, POST, PUT, DELETE, TRACE, OPTIONS");
          }
          else
          {
              Response.Write("This is a " + Request.HttpMethod);
          }
          Response.End();
      }
      
      public void Trace(string url)
      {
          HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(url);
      
          httpWReq.Method = "TRACE";
          httpWReq.ContentType = "application/x-www-form-urlencoded";
      
          HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
      
          string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
          Response.ClearContent();
          Response.Write(responseString);
          Response.End();
      }

        運行結果:

        get/put/post的header及body類似,也很常見,這里就不帖圖了

        

      HEAD

       

      TRACE

       

      OPTIONS

      posted @ 2013-09-24 17:49  artwl  閱讀(1098)  評論(0)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 国产精品无码成人午夜电影| 亚洲精品国产综合麻豆久久99| 亚洲精品国产美女久久久| 亚洲理论电影在线观看| 来宾市| 欧美亚洲熟妇一区二区三区| 欧美日韩精品一区二区视频| 亚洲高清免费在线观看| 人人爽人人爽人人片a免费| 日本乱码在线看亚洲乱码| 浮妇高潮喷白浆视频| 久久一区二区中文字幕| 中文字幕国产精品一二区| 中文字幕日韩有码一区| 精品国产乱码久久久久夜深人妻| 久久亚洲精品成人av秋霞| 亚洲色大成网站WWW久久| 日本一道高清一区二区三区| 国产精品国产三级国产an| 精品视频不卡免费观看| 国内极度色诱视频网站| 一二三三免费观看视频| 亚洲男人的天堂一区二区| 99国产欧美另类久久久精品| 自拍视频在线观看成人| 99久久久无码国产精品动漫| 一个人免费观看WWW在线视频| 国产精品无遮挡在线观看| 日韩亚洲精品中文字幕| 申扎县| 少妇宾馆粉嫩10p| 亚洲人成网站18禁止无码| 亚洲精品国产av成人网| 国产欧美精品一区aⅴ影院| 国产国产午夜福利视频| 99精品国产综合久久久久五月天| 龙胜| 亚洲成a人片在线观看中| 男人av无码天堂| 思思热在线视频精品| 国产免费午夜福利在线观看|