HTTP协议学习,post于get;用Fiddler测试请求
转载 收藏于网络
1.简介:
HTTP协议:Hypertext transfer protocol 超文本 传输 协议
它是TCP/IP协议集中的一个运用层协议。
用于定义WEB浏览器和WEB服务器之间交换数据的过程和数据的格式。
2.会话方式:
1.建立链接 2.客户端发送请求到服务器 3.服务器响应 4.关闭链接
3.HTTP/1.1比HTTP/1.0的进步
1.一个ICP/IP上可以包含多个HTTP请求和响应
(这样,一个网页中的多张图片就可以在一个TCP/IP中传输 (HTTP/1.0每个图片需要建立一个TCP/IP连接) 。 但是每个单独网页文件,必须建立一个单独的TCP/IP连接)
2.多个请求和响应和同时进行。
(一个网页的单独ICP/IP连接中。发送第一次请求后,不用等待第一次响应完成,可以先发送第二次请求。)
(服务器按照客户端请求的先后顺序,回送响应结果。)
3.增加更多的请求头和响应头。 如:增加HOST请求头,可以使用主机名,表示访问服务器上面那个web站点。
4.HTTP请求消息
请求消息的结构:1.一个请求行(请求方式 请求URL HTTP版本) 2.若干消息头(可选,可以没有) 3.实体内容(GET请求没有,而且只有POST、PUT、Delete、请求才有) 消息头和实体的内容之间要用空行隔开(代表消息头结束,空行后面是实体内容。按ENTER键就可以)
5.HTTP响应消息
响应消息的结构:1.一个状态行 2.若干消息头(可选,可以没有) 3.实体内容(可以没有) 消息头和实体的内容之间要用空行隔开(代表消息头结束,空行后面是实体内容。实体内容就是网页的源代码)
6.消息头作用:
相当于服务器和浏览器之前的指令。
浏览器用消息头向服务器传递信息:1.传递自己国家的语言Accept-Language 2.把当前网页从哪个链接来访问的告诉服务器 ...
服务器告诉浏览器:1.告诉浏览器使用什么字符集显示页面 2.在客户端创建一个cookie ...
格式:名称:空格 值(多个值用,号隔开) 回车。 有些头可以出现多次。 不区分大小写,默认,每个单词首字母大写。
7.使用telnet命令测试
1.telnet localhost 80
2.按下 'CTRL+]',打开本机回显功能。
3.按回车
4.GET /a.htm HTTP/1.0 回车,再按一下回车。
HTTP/1.0中的请求案例:
GET /a.html HTTP/1.0
HTTP/1.1 200 OK
Content-Length: 16
Content-Type: text/html
Last-Modified: Tue, 16 Oct 2012 07:14:37 GMT
Accept-Ranges: bytes
ETag: "885ba7e66dabcd1:7d4"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 20 Oct 2012 07:31:58 GMT
Connection: close
var data="12345"
(var data="12345"是a.htm的网页内容)
HTTP/1.1中的请求案例(状态行后面必须加上空行 然后加上HOST才行):
GET /1.htm HTTP/1.1
HOST:
HTTP/1.1 200 OK
Content-Length: 427
Content-Type: text/html
Last-Modified: Sun, 21 Oct 2012 11:23:57 GMT
Accept-Ranges: bytes
ETag: "f82bcc8f7eafcd1:7dc"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sun, 21 Oct 2012 11:24:33 GMT
锘?html>
<head>
<title>Does get request can auto transfer input's para in url?</title>
</head>
<body>
<form method="get" action="http://127.0.0.1/Default.aspx" enctype="applicat
ion/x-www-form-urlencoded">
UserName:<input id="txtUserName" type="text" />
PassWord:<input id="txtPassWord" type="text" />
<input id="Submit1" type="submit" value="submit" />
</form>
</body>
</html>
简单请求:GET /1.htm 响应的内容:只有实体内容没有消息头等..
POST请求案例:
POST /default.aspx HTTP/1.1
HOST:
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
userName=zhangsan&password=123456
HTTP/1.1 200 OK
Date: Sun, 21 Oct 2012 11:33:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 545
Form type can get parameter,userName:zhangsan,password:123456
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="default.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2
ODcyMjlkZJxyQVLtbVdT/S4NG8fM3Qcn72RqiNW53mCR7pPt+9kF" />
<div>
</div>
</form>
</body>
注意:1.Content-Type必须是application/x-www-form-urlencoded,才能获取到提交的数据。
2.这里Content-Length计算的是传递的如果Content-Length: 35
3.消息头和实体内容之间要空格隔开,按2次ENTER键
8 响应状态码
常见状态码:
9 通用信息头:
包括一些于被传输的实体内容没有关系的消息头。 (即能用于请求的消息头,也能用于响应的消息头)
Cacle-Control: no-cache 请求完成后,不保存缓存,下一次重新请求服务器
Connection: close 请求完成后,断开连接.不能继续发出请求。 telnet中:GET /1.htm HTTP/1.1 Host: Connection: close HTTP/1.1 200 OK......失去了跟主机的连接。
Date: 日期
Pragma: no-cache
Trailer:Date
Transfer-Encoding: chunked 分段传输
Upgrade: HTTP/2.0,SHTTP/1.3
Via: HTTP/1.1 Proxy1, HTTP/1.1 Proxy2 代理服务器
Warning: any text
10.请求头
11.实体头:
12.扩展头:
附:用Telnet测试http请求比较麻烦,Fiddler工具非常强大好用。
传递一个json对象发post请求案例:
1.打开Fiddler,点击Composer选项卡
2.下拉框选择Post
3.输入请求的URL,比如:http://localhost:49194/api/user/
4.Request Headers中输入:
Content-Type: application/json; charset=utf-8
Content-Length: 398 (这个是你要和你请求正文的字符长度一致,可以不输入,自动计算)
5.输入,Requst Boy,比如:
{"UserName":"logic5","Password":"Test1234","FirstName":"Ivan","LastName":"Chen","LastLoginDate":"2010-01-01","Email":"ivan.chen@logicsolutions.com","CreateDate":"2010-01-01","LastPasswordChangedDate":"2010-01-01","LastLockoutDate":"2010-01-01","IsLockedOut":true,"IsApproved":false,"DisableDate":"2010-01-01","IsDisable":false,"profile":{"TINs":"743222298","ProviderId":168829,"UserName":"logic5"}}
点击Execute,操作成功!
说明:本文整理自传智博客张孝祥老师的教程。 缅怀张老师!!!
HTTP协议学习,post于get;用Fiddler测试请求的更多相关文章
- 转 #HTTP协议学习# (一)request 和response 解析
http://www.cnblogs.com/bukudekong/p/3834020.html #HTTP协议学习# (一)request 和response 解析 注:本文转自:http:// ...
- TCP/IP协议学习(五) 基于C# Socket的C/S模型
TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...
- http协议学习系列
深入理解HTTP协议(转) http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列 1. 基础概念篇 1.1 介绍 H ...
- BGP协议学习总结
BGP学习总结 BGP是目前使用的唯一的自治系统间的路由协议,它是一种矢量路由协议,基于TCP的179号端口,它采用单播增量更新的方式更新路由,与其他的路由协议不同的是,BGP只要TCP可达,就可以建 ...
- TCP/IP协议学习之实例ping命令学习笔记
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...
- HTTP协议学习笔记(四)
HTTP协议学习笔记(四) 与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟主机实现多个域名 ...
- HTTP协议学习笔记(三)
HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误 ...
- HTTP协议学习笔记(二)
HTTP协议学习笔记(二) 1.HTTP报文 HTTP报文:用于HTTP协议交互的信息.请求报文:请求端(客户端)的HTTP报文叫做请求报文.响应报文:响应端(服务端)的HTTP报文叫做响应报文. H ...
- HTTP协议学习笔记(一)
HTTP协议学习笔记(一) 1.HTTP协议用于客户端和服务端之间的通信 客户端:请求访问文本或图像等资源的一端服务端:提供资源响应的一端 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定 ...
随机推荐
- python基础7(函数 Ⅱ)
1.python代码运行遇到函数时 从python解释器开始执行之后,就在内存中开辟了一个空间 每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来. 但是当遇到函数定义的时候解释器只是象征性 ...
- curl命令查看响应时间
curl -w "%{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_dow ...
- 个人创业了,做了个网站和App,www.91tianwu.com
大家好! 很久没有写文章了,响应党和政府号召,创业了.此文为了推广我的网站而写,希望有兴趣的看看. 我做了添物网,地址:http://www.91tianwu.com. 主要做购物导航推荐,目前集中在 ...
- cocos2dx2.0 与cocos2dx3.1 创建线程不同方式总结
尽管内容是抄过来的.可是经过了我的验证.并且放在一起就清楚非常多了,cocos2dx版本号常常变化非常大.总会导致这样那样的问题. cocos2dx2.0 中 1. 头文件 #include < ...
- android JNI 一维数组、二维数组的访问与使用
在JNI中访问JAVA类中的整型.浮点型.字符型的数据比较简单,举一个简单的例子,如下: //得到类名 jclass cls = (*env)->GetObjectClass(env, obj) ...
- PHP str_replace() 和str_ireplace()函数
PHP str_replace() 和str_ireplace()函数 实例 把字符串 "Hello world!" 中的字符 "world" 替换为 &quo ...
- nyoj--311--完全背包(动态规划,完全背包)
完全背包 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 直接说题意,完全背包定义有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的体积是c,价值是w. ...
- Servlet监听器及在线用户
Servlet中的监听器分为三种类型Ⅰ 监听ServletContext.Request.Session作用域的创建和销毁 (1)ServletContextListener (2)HttpSessi ...
- VS2012恢复默认设置的2种方法
方法一: 工具 → 导入和导出设置 → 重置所有设置 → 下一步 → 选择“是否保存当前设置”,下一步 → 选择“要重置的开发语言(如,Visual C# 开发设置)” → 完成. 方法二: 1.依次 ...
- OGG切换步骤
步骤描述 提前准备好切换方案:以及其他相关人员的配合 切换至容灾数据库: (1)停止前端业务,确认目标端数据已经追平 (2)数据校验,确认数据一致 (3)停止生产库OGG进程(停止后可以直接删除) ( ...