一个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"。

注:

  在Form元素的语法中,EncType表示提交数据的格式。用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
  下边是说明: 
    application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 
    multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 
    text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。

  Form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。

  当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

  当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。

http请求分析的更多相关文章

  1. [原]Django慢请求分析工具--dogslow

    当你的网站突然变慢了,你怎么办? 先看监控,查看系统的资源消耗,CPU?IO?磁盘? 然后看日志,查看第一个出现慢请求的接口是哪个? 然后看依赖的服务,是第三方服务还是DB瓶颈,还是redis变慢,还 ...

  2. iOS美丽约网络请求分析

    网络请求分析html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; padd ...

  3. 一个简单的wed服务器SHTTPD(2)———— 客户端请求分析

    //start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...

  4. 使用tcpdump+Wireshark(或Fiddler)做linux服务器的网络请求分析

    我们的服务器上,一般都没有窗口界面,这时候要抓包,用tcpdump是最方便的.而分析网络请求时,wireshark又是相当方便的,这时候我们就需要把它们两个一起来使用了. tcpdump 抓取数据 命 ...

  5. HTTP请求分析工具Fiddler

    主要用于分析http头信息和响应头信息,以及具体的post数据和响应数据,可以监测电脑上http请求.

  6. 完整的http请求分析

    首先我们要明白什么是http. http:超文本传输协议(HTTP,HyperText Transfer Protocol). 超文本传输协议是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必 ...

  7. sql server 性能调优之 当前用户请求分析 (1)

    一. 概述 在生产数据库运行期间,有时我们需要查看当前用户会话状态或者是说数据库当前是否运行良好, 应用的场景比如:当运行的应用系统响应突然变慢时需要分析数据库的.或想分析当前的数据库是否繁忙,是否有 ...

  8. 【转】HTTP协议之multipart/form-data请求分析

    原文链接:http://blog.csdn.net/five3/article/details/7181521 首先来了解什么是multipart/form-data请求: 根据http/1.1 rf ...

  9. TOMCAT8源码分析——处理请求分析(下)

    前言 本文继续讲解TOMCAT的请求原理分析,建议朋友们阅读本文时首先阅读过<TOMCAT源码分析——请求原理分析(上)>和<TOMCAT源码分析——请求原理分析(中)>.在& ...

  10. TOMCA源码分析——处理请求分析(上)

    在<TOMCAT源码分析——请求原理分析(上)>一文中已经介绍了关于Tomcat7.0处理请求前作的初始化和准备工作,请读者在阅读本文前确保掌握<TOMCAT源码分析——请求原理分析 ...

随机推荐

  1. protobuf-2.5.0的下载与安装

    1.下载 Hadoop使用protocol buffer进行通信,需要下载和安装protobuf-2.5.0.tar.gz.由于现在protobuf-2.5.0.tar.gz已经无法在官网https: ...

  2. Python locale 多语言模块和我遇到的坑

    Table of Contents 1. locale遇到的问题 1.1. locale 简介 1.1.1. 什么是locale 1.1.2. locale 相关命令 1.2. Python loca ...

  3. HTML DOM简易学习笔记

    文字版:https://github.com/songzhenhua/github/blob/master/HTML DOM简易学习笔记.txt 学习地址:http://www.w3school.co ...

  4. DesiredCapabilities的作用

    负责启动服务端时的参数设置,启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情,比如: 本次 ...

  5. CSS UNIT 详解以及最佳实践

    分类 ■    绝对长度(Absolute units):cm,mm,in,pt,pc 绝对单位之间的换算:1in = 2.54cm=25.4mm=72pt=6pc 绝对长度在css中的表现和其他地方 ...

  6. Jmeter编码问题

    问题现象:1.利用csv data set config参数化数据后,在beanshell中引用,能正常引用到,但是传给服务器时,还是报手机号格式不对 将jmeter日志级别打成debug(jmete ...

  7. cannot bind to 127.0.0.1:5037 报错

    使用appium连接真机时,提示这个错误,找了很久,发现是端口被占用 打开cmd,netstat -nao查看当前的TCP连接,找到使用127.0.0.1:5037的代码,然后到任务管理器查看详细进程 ...

  8. OZ customize windows iamge

    1.之前通过修改auto文件和windows.py文件可实现自动安装OS,但是disk bus只能以IDE模式启动,进入系统自动下载运行bat文件,安装cloudbase-init和qga,及清理日志 ...

  9. Linux网络运维相关

    删除特殊的用户和用户组 userdel games group games   关闭不需要的服务 chkconfig chkconfig --level 345 bluetooth off   删减系 ...

  10. jquery实现京东淘宝首页的轮番效果图

    主要是绑定事件以及实现自动滚轮 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...