美文网首页
Http协议窥探

Http协议窥探

作者: xbase | 来源:发表于2016-08-15 22:32 被阅读48次

    POST和GET

    HTTP一共有8种请求,其中比较重要的就是POST和GET,其余的还有HEAD、PUT.
    1.GET请求可以被缓存起来,收藏为书签,但是POST不行。
    2.GET可以被保存到历史记录中,但是POST不会。
    3.GET请求的长度有限制(根据浏览器的不同而不同,大约几kb),POST无限制
    4.GET请求的参数在URL连接上,相对不安全,POST请求参数写在HTTP的请求头中,相对安全。

    首部(共74个,不能一一列出,只挑选相对重要一些的)

    通用首部

    Cache-control:

     no-cache:强制向源服务器再次验证。
     no-store: 不缓存请求或响应的内容。      
    

    Connection:

    1.控制不再转发给代理的首部字段(Connection:不再转发的首部字段名)。
    2.管理持久连接(Connection:close 关闭连接  Connection:Keep-Alive )。 
    【注】:HTTP/1.1默认连接是持久连接,对于1.1之前的版本需要使用Connection:Keep-Alive来保持持久连接。
    

    Upgrade:

     除了使用HTTP协议外,还能用此字段进行扩展协议
    

    Via:

    为了追踪client和server之间的请求和响应的路径。
    例:Via:1.0 gw.hackr.jp     1.0表示http的版本,gw.hackr.jp表示当前的代理服务器信息。
    

    Date:

    Date: Tue01 Jul 2012 04:40:59 GMT
    

    Warning:

    请求首部

    accept:
    用于指定客户端接受那些请求的类型。
    例:Accept:text/html,表明客户端希望接受html文本。

    accept-encoding:
    用于指定客户端可接受的编码内容。
    accept-language:
    用于指定客户端可接受的自然语言。
    accept-charset:
    用于指定客户端可接受的字符集。
    Authorization:
    用于证明客户端有权限查看某些资源。
    Host:
    用于指定被请求资源的Internet主机和端口号。
    If-Match:
    告诉服务器匹配资源所用的实体标记值(ETag)。
    If-Range:
    告诉服务器若指定的If-Range字段值和请求资源的ETag值或时间相一致时,则作为范围请求处理。
    Max-Forwards:
    通过TRACE方法或OPTIONS方法。
    User-Agent:
    它的操作系统、浏览器和其它属性告诉服务器。

    响应首部

    Accept-Ranges:
    用来告知客户端服务器是否能处理范围请求,以指定获取服务器端某个部分的资源。
    Age:
    告知客户端,源服务器在多久前创建了响应。字段值的单位为秒。
    ETag:
    能告知客户端实体标识,一种可将资源以字符串形式做唯一标识的方式,服务器会为每份资源分配对应的ETag值。
    强ETag值和弱ETag值
    强ETag值,不论实体发生多么细微的变化都会改变其值。
    弱ETag值,只用于提示资源是否相同,只有资源发生了根本改变,产生差异时才会改变ETag值。这时会在字段值最开始处附加W/,ETag:W/"usagi-1234"
    Location:
    使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。
    Retry-After:
    告知客户端应该在多久之后再次发送请求。
    Server:
    告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
    例子:Server:Apache/2.2.6(Unix)PHP/5.2.5
    Vary:
    对缓存进行控制,源服务器会向代理服务器传达关于本地缓存使用方法的命令。
    WWW-Authenticate:
    首部字段WWW-Authenticateu用于HTTP访问认证。告知客户端适用于访问请求URI所指定资源的认证方案和带参数提示的质询。

    实体首部

    Allow:
    告知客户端能够支持Request-URI指定资源的所有HTTP方法。
    Content-Encoding:
    通知客户端服务器对实体的主体部分选用的内容编码方式(gzip、compress、deflate、identity)。
    Content-Language:
    通知客户端服务器对实体的主体部分使用的自然语言。
    Content-Location:
    Content-Location:http://www.baidu.com
    表示报文主体返回资源对应的URI。
    Content-MD5:
    客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5的字段值比较。
    Content-Range:
    返回响应时使用的首部字段Content-Range,能告知客户端作为响应返回的实体的哪个部分符合范围请求。字段值以字节为单位,表达当前发送部分及整个实体大小。
    Content-Type:
    说明了实体主体内对象的媒体类型。
    Expires:
    将资源失效的日期告知客户端。
    Last-Modified:
    指明资源最终修改的时间。

    其他

    Cookie:服务器接收到的Cookie信息
    例子:
    set-Coolie:开始状态管理所使用的Cookie信息
    例子:set-Cookie:status=enable;expires=Tue,05 Jul 2016 08:00:00 GMT;path=/;domain=www.baidu.com

    加密机制

    HTTP与HTTPS

    HTTP协议:使用HTTP协议时,客户端与服务端的80端口建立一个TCP连接,然后就在这个连接的基础上进行请求和应答,以及数据的交换。
    [注]:HTTP1.0和HTTP1.1的区别是:1.0每次请求都要建立一个新的TCP,1.1可以运行在一个连接上发送多次命令和应答,提高效率。

    HTTPS的优势:加密+认证+完整性保证。
    HTTPS的劣势:

    1.加密需要占用大量cpu和内存
    2.多了一层SSL和TLS通信层,必然拖慢速度。
    

    Cookie和Session

    作用:因为HTTP是一种无状态的连接,所以无法记录上次传输的数据。
    1.Cookie保存客户端,Session保存在服务器。
    2.Cookie相对来说不安全,浏览器可以分析本地的Cookie,进行Cookie欺骗。
    3.Session可以设置超时时间,超过这个时间就会失效,以免长期占用服务器内存。
    4.单个Cookie大小限制(4kb),每个站点的Cookie数量一般也有限制(20个)。
    5.客户端每次都会把Cookie发送到服务器,因此服务器可以知道Cookie,但是客户端不知道Session。

    服务器收到Cookie后,会根据Cookie中的SessionID来找到客户的Session,如果没有,会生成一个新的SessionID随Cookie发送给客户端。

    相关文章

      网友评论

          本文标题:Http协议窥探

          本文链接:https://www.haomeiwen.com/subject/eqtyrttx.html