HTTP协议细节
一】客服端 --> 服务端
1》结构
a)请求行
b)请求头
c)请求体:请求的内容,如果没有,就是空白字符
2》请求(客户端)
请求详细:
1》请求行
GET(请求的方式) /books/java.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
2》多行请求头
Accept:*/* (客户端能接受的资源类型)
Accept-Charset:GBK (客户端支持的编码格式)
Accept-Language:en-us(客户端接受的语言类型:中文、英文等)
Connection:Keep-Alive (发出请求后,维持客户端和服务端的连接关系)
Host:localhost:8080 (连接的目标主机和端口号)
Referer: http://localhost/links.asp (来自于哪里)
User-Agent:Mozila/4.0 (客户端版本号的名字)
Accept-Encoding: gzip, deflate (客户端能够接收的压缩的数据的类型)
If-Modified-Since:Tue,11 Jul 2014 18:23:50 GMT (缓存的时间)
Cookie(客户端暂存服务端的信息)
Date:TUe,11 JUl 2013 18:33:34 GMT (客户端请求服务端的时间)
3》请求的内容(没有就空白字符)即:请求体
二】常用的提交方式
1)GET
特点:
1》求参数无论多少,都会跟着URL后面传到服务端,并且以明文的方式。
2》GET传递会收到浏览器的限制,有长度的限制。
3》GET方式传递信息不安全。
2)POST
特点:
1》请求参数无论多少,都不会跟着URL后面传到服务器,而是以参数形式在求体中传递到服务端
2》POST方式传递无大小限制
3》GET方式传递信息相对安全
4》传送的数据量无限制,还可以用于文件的下载
三】服务端 ---> 客户端
1)结构:
a、一个状态行
b、若干个消息头
c、实体内容
2)详细
Http/1.1 (相应采用的协议和版本号) 200(状态码) ok(描述信息)
Location: http://www.baidu.com(服务端需要让客户端去访问的页面路径)
Server:apache tomcat(服务端的Web服务器名)
Content-Encoding: gzip(服务端能够发送的压缩编码类型)
Content-Length: 80(服务端发送给服务端的压缩后数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1(服务端禁止客户端缓存页面数据//3种包含下面的2种)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据)
Pragma: no-cache(服务端禁止客户端缓存页面数据)
Connection: close/Keep-Alive(维护客户端和服务端的连接关系,1.0用close,1.1用Keep-Alive)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)
四】状态码
302:重定向。客户端请求服务端,但服务端没有对应的资源,服务端要求客户端再次请求找其它的服务端,即客户端二次请求。
307:转发。客户端请求服务端,但服务端没有对应的资源,服务端自行请求去找其它的服务段,即客户端一次请求。
304:客户端请求服务端,但此时客户端缓存中有这个资源,无需再从服务端下载新的内容,此时服务端叫客服端自行找缓存。优化常用的方式。
404:服务端没有此资源。
500:客户端请求的资源服务端存在,但在执行的时候出错了。
总结:
想让浏览器有何种行为,服务端只能通过响应头的方式来设置
想让浏览器知道何种行为,浏览器只能通过请求头的方式来请求
HTTP协议细节的更多相关文章
- 浅谈MySQL压缩协议细节--从源码层面
压缩协议属于mysql通讯协议的一部分,要启用压缩协议传输功能,前提条件客户端和服务端都必须要支持zlib算法,那么,现在有个问题,假如服务端已经默认开启压缩功能,那原生客户端在连接的时候要如何才可启 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议(2)--移动IP及DHCP
题外话:本来想按照互联网的层级自下向上回顾这些协议的,但是今天实在得破个例,DHCP不得不说! 主机从一个网络迁移到另一个网络,那么IP编址的结构就要发生改变,当今主流有如下几种修改方案: (一)改变 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方
在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议
说到关于IP协议,就必须先说IP协议的两个特性: (一)不可靠性(unreliable) 不可靠性的意思是它不能保证IP数据报能成功地到达目的地,IP所能做的只是提供最好的传输服务,IP有一个简单的错 ...
- Tcp协议细节(三次握手,四次握手)
利用滑动窗口实现流量控制(让发送方的发送速率不要太快,让接收方来得及接收) (发送窗口的发送窗口不能超过接收方给出的接收窗口的数值) 拥塞控制 拥塞:在某段时间,对网络中某一资源的需求超过了该资源所能 ...
- 浅析UPnP协议
摘要:文章介绍了UPnP结构规范和开发流程,指出:UP nP协议使所有联网的设备实现互联,设备工作不需要传统的驱动程序,便可以实现设备间的 相互控制. 关键词:UPnP协议:开发流程:电子技术:工作 ...
- 聊聊HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- 浅谈 HTTPS 和 SSL/TLS 协议的背景与基础
来自:编程随想 >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 ...
- 好程序员带你了解一下HTTPS和SSL/TLS协议的背景与基础
>> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其 ...
随机推荐
- MyBatis里字段到枚举类型的转换/映射
一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是枚举,在DB存储时我们想存的枚举的代号,从DB拿出来时想直接映射成目标枚举类型,也即代号字段与Java枚举类的相互类型转 ...
- js 删除效果代码
效果 css文件delcss.css 代码如下: ;;} #div1{;; filter:alpha(opacity:0); display:none;} #div1 h3{ height:20px; ...
- [LeetCode] 160. Intersection of Two Linked Lists 解题思路
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- 大型分布式C++框架《三:序列化与反序列化》
一.前言 个人感觉序列化简单来说就是按一定规则组包.反序列化就是按组包时的规则来接包.正常来说.序列化不会很难.不会很复杂.因为过于复杂的序列化协议会导致较长的解析时间,这可能会使得序列化和反序列化 ...
- [原创]Python入门到简单网站目录扫描器编写(上)
1.字符串,整型,浮点型.区别以及用法 |------字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 可以不严格的说,你可以认为引号包括的,都属于字符串 ...
- 公告:CSDN博客频道新功能正式上线!
各位尊敬的CSDN用户: 你们好! 为了更好的服务于用户,CSDN博客最新推出如下功能: 1.取消开通博客3天才能发布博文的限制,博客开通之后即可发表博文 2.博客文章增加自定义摘要功能 在发表 ...
- [ES6] Class Inherit
In constructor, you can call parent's constuctor() method by supert(); class ShoppingCart { construc ...
- hdu 3395
KM裸题 每个鱼都认为自己是雄性,而且会攻击它认为是雌性的鱼,每个鱼只能被攻击一次,被攻击后会产卵(个数是给的两条鱼的值的异或运算) #include<string.h> #include ...
- Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime
我们知道 Linux里面一切皆文件 ,那么我们能否查看一个文件是何时创建的呢?答案是否定的.那我们可以知道些文件关于时间的什么信息呢?那就不得不说文件状态的三个时间了,它们分别是 -atime, -c ...
- C语言函数指针(转载)
二.通常的函数调用 一个通常的函数调用的例子:/* 自行包含头文件 */void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */int main(int a ...