分享

Http请求分析

 韦薇薇 2012-02-17

Http请求分析

一个Http请求一般始于如下几种方式:

 
  1.在浏览器中输入一个URL地址


  2.网页中的一个超链接


  3.Response.Redirect("http://www.sohu.com")在后台进行重定向


  4.Form表单提交

  前三种方式都是以Get方式发起请求。第四种方式可以以Get方式发起请求,也可以以Post方式发起请求,只需要设置<form action="" method="Get/Post"></form>的method属性即可,默认该属性值为Get.

 

  当客户端发起一个Http请求到服务端时,会传输一个Http请求消息给服务端,标准的Http请求消息格式如下:


     请求行(request-line)——请求行的格式为:请求方式_资源路径_http版本号(Get
http://www.sohu.com/Default.aspx HTTP/1.1)

 
     消息头(headers)——说明服务器要使用的附加信息(ContentType:application/json Content_Length:18 等等其他头信息)

 
     回车换行(CRLF)——表明头部信息结束

 
     主体数据(request-body)——需要传输到服务端的数据内容,以Post方式请求时才会有该项数据。(username=tom&age=21)

 
     回车换行(CRLF)——表明主体数据信息结束

 
  需要说明的是:
    1.当一个Http请求时Get方式的请求时,请求消息中只有前三项,而没有主体数据。当以Post方式请求时,会包含上述五项信息。


    2.无论是Get请求还是Post请求,请求行中的资源路径必须是application/x-www-form-urlencoded方式编码。Get请求时,浏览器会自动对其进行UrlEncode。Post请求时,浏览器不会自动进行UrlEncode,所有需要手动对资源路径进行UrlEncode.


    3.Post请求时,请求消息中存在主体数据,主体数据的编码方式由消息头中的ContentType属性来设置,主体数据的长度由Content_Length来设置。故在进行一些异步的Post请求时,需要设置ContentType属性。如果使用form表单进行Post请求时,只需要设置form元素的encType属性即可,浏览器会在请求消息的消息头中加入ContentType属性,并且值encType的值。如果没有设置encType属性值,默认会将ContentType设置为application/x-www-form-urlencoded。

 
    4.form元素进行请求时,如果是Get方式进行请求,action标签属性中如果存在"?子句",GET方式将会忽略这个子句。浏览器会自动将表单域的元素的name和value组成键值对放在请求的Url后面,如http://localhost/Default.aspx?age=21。如果以Post方式进行请求,action标签属性中存在"?子句",Post方式会保留这个子句,服务端也可以获得这个子句。

 
    5.如果form元素进行请求时,form内含有文件上传控件,需要上传文件数据是,encType要设置成"multipart/form-data"。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多