http请求报文格式:

        

        请求行:方法 路径 http版本,e.g:GET /p_w_picpaths/logo.png HTTP/1.1

请求头部:Accept-Language等

空行

可选消息主体

注:请求行和其他头部必须以<CR><LF>结尾,空白行只有<CR><LF>。其中'Host'域区分实现区分虚拟主机功能,在http/1.0中可选,http/1.1中强制。


http响应报文格式:

        状态行:http版本 状态码 状态:e.g:HTTP/1.1 200 OK

响应消息头部:如Content-Type:text/html

空行

可选消息主体

注:状态行和其他头部必须以<CR><LF>结尾,空白行只有<CR><LF>


http方法:

        GET:请求指定的资源

        HEAD:请求和GET方法一样的响应头文件,但没有主体

        POST:请求接受请求中的实体作为一个新的当前URI定义的网络资源的下级。如可能是提交表单,公告板信息,邮件列表,评论,或者提交的表单

        PUT:要求封闭的整体被存储在指定URI下,已存在则替换资源,不存在则创建

        DELETE:删除指定资源

        TRACE:回显收到的请求以确保中间媒介没有修改或增加内容

        OPTIONS:返回服务器支持的HTTP方法,通过请求'*'而不是指定的资源

        CONNECT:转换链接到一个透明的TCP/IP隧道来实现HTTPS加密传输等,以实现通过未加密的HTTP代理的安全

        PATCH:修改部分资源


http请求报文头部:

        Accept:    e.g:text/plain 接受的内容类型

        Acccept-Charset:    e.g:    utf-8 接受的字符集类型

        Accept-Encoding:    e.g:    gzip,deflate 接受的编码

        Accept-Language:    e.g:    en-US 接受的语言

        Accept-Datetime:    e.g:    Thu, 31 May 2007 20:35:00 GMT 接受的时间类型

        Cache-Control:    e.g:    no-cache 指定缓存类型

        Connection:        e.g:    Keep-alive|UpGrade 链接类型

        Upgrade:    e.g:    HTTP/2.0, SHTTP/1.3, TRC/6.9要求服务器升级到其他协议

        User-Agent:    e.g:    Mozilla/5.0 (X11;Linux x86_64;rv:12.0) Gecko/20100101 Firefox/21.0 用户代理,即浏览器信息

        Cookie: 被服务端set-cookie指令设定的cookie

        Host:    域名和端口,端口可省,1.1中强制要求Host存在


http响应报文头部:

        Accept-Patch:    e.g:    text/example;charset=utf-8 支持的补丁文档格式

        Age:        e.g:    12     在缓存代理中存在的秒数

        Allow:e.g:         GET, HEAD 支持的方法

        Cache-Control:    e.g:max-age=3600 客户端可以缓存这个页面的秒数

        ETag:        e.g:    "737060cd8c284d8af7ad3082f209582d" 指定资源的标识符,通常为消息摘要

        Expires:        e.g:    Thu, 01 Dec 1994 16:00:00 GMT 过期时间

        Retry-After 资源暂时不可得时的重试秒数

        Server         服务器名称

        Set-Cookie     设置cookie


Cookie技术:


cookie类别:

    session cookie: 会话cookie,用户浏览网站时存在临时内存里,用户关闭浏览器时就会删除之,会话cookie没有过期时间,浏览器,以此区别会话cookie


    persistent cookie: 长期cookie, 在指定时间或者指定的时间长度后过期,在用户浏览cookie所属的网站或者含有那个网站链接(比如广告)时,cookie就会被发送给服务器。长期cookie也叫跟踪cookie,可以根据大量含有链接的网站了解用户习惯。也可以作为已登录的凭证


    secure cookie:安全cookie, 只能被加密传输,如https


    httponly cookie: 只能通过http/https传输使用的cookie,不能被不含http api的应用如javascript获取,避免跨站脚本攻击,无法避免跨站追踪或者跨站伪造请求。此cookie被大多数现代浏览器支持


    third-party cookie: 第三方cookie, 不属于访问的网站的服务器的cookie,比如广告链接的cookie


    Supercookie: 含有顶级域名的cookie,如.com或公用后缀如.co.uk.普通cookie有一个特定的域名,比如example.com,超级cookie可以恶意影响发向普通cookie的请求


    supercookie(other uses): 不信赖http cookies的追踪技术,两种这种cookie机制最初在2011年发现在微软的网站上,后来被移除


    Zombie cookie :被删除后自动重新创建的cookie, 由客户端脚本完成,它把cookie存储在不同地方,如,flash local storage, html5 storage, 以及其他客户端存储位置,一旦发现cookie消失就利用存储在别处的cookie重新创建之

 

cookie属性:


        cookie为ASCII字符,除了',' , ';' , '='和空白符


        cookie也有其他属性,但浏览器只发送名-值对,其他属性由浏览器理解,决定是否删除,拒绝或发送cookie


        域名(domain)和路径(path)

如果没给出域名和路径,默认为当前域名和路径,有域名和没域名的区别是没有域名cookie只会发送到当前域名,而有域名则其所有子域名被访问时都会发送cookies,域名前'.'可选,带上与RFC2109兼容


    过期时间和最大时间:

格式:Wdy, DD Mon YYYY HH:MM:SS GMT



cookie也可由客户端创建,对浏览器的要求如下:

支持最大4096个字节的cookies

每个域名可最少存储50个cookies

可以存储最少3000个cookies