http基础

http基础

常用浏览器
  Firefox   IE   Chrome   Opera   Safari

TCP三次握手(建立连接)

http基础

TCP四次挥手(断开连接)

http基础

URI

http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
协议     登录信息   服务器地址    端口号  文件路径  查询字符串 片段标识符         

协议:      获取访问资源时要指定协议类型
登陆信息:    身份认证
服务器地址:   可以是DNS解析的域名也可以是IPv4地址
端口号:     指定服务器提供Web服务的端口
文件路径:    指定服务器上的文件路径来定位特定资源
查询字符串:   针对已指定的文件路径内的资源,使用查询字符串传入任意参数,获取特定资源
片段标识符:   可以标记处已获取资源中的子资源

Method

1 GET     请求访问已被URI识别的资源
2 POST     传输实体的主体
3 PUT     上传文件
4 HEAD     获得报文的首部
5 DELETE    按请求URI删除指定的资源
6 OPTIONS   查询服务器端支持的HTTP方法种类
7 TRACE     让Web服务器将之前的请求通信环回给客户端
8 CONNECT    在与代理服务器通信时建立隧道

持久连接
  keep-alive字段
    只要任意一端没有明确提出断开连接,则保持TCP连接状态
    为传送大量数据提供服务,减少TCP连接重复建立和断开

状态码

  1XX     信息性状态码 接收的请求正在处理
  2XX      成功状态码 请求正常处理完毕
  3XX      重定向状态码 需要进行附加操作以完成请求
  4XX     客户端错误状态码 服务器无法处理请求
  5XX      服务器错误状态码 服务器处理请求出错

经常遇到的状态码

200 OK
    # 表示从客户端发来的请求在服务器端被正常处理了

204 No Content
    # 表示请求已成功处理,但在返回的响应报文中不含实体的主体部分

206 Partial Content
    # 表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求

301 Moved Permanently
    # 永久性重定向

302 Found
   #  临时性重定向

303 See Other
    # 表示请求对应的资源存在着另一个URI

304 Not Modified
    # 表示服务器没有改变的资源

307 Temporary Redirect
    # 临时重定向

400 Bad Request
    # 表示请求报文中存在语法错误

401 Unauthorized
    # 表示发送的请求需要有通过HTTP认证的认证信息

403 Forbidden
    # 表明对请求资源的访问被服务器拒绝了

404 Not Found
    # 表明服务器上无法找到请求的资源

500 Internal Server Error
    # 表明服务器本身发生错误

503 Service Unavailable
    # 表明服务器处于超负载或正在进行停机维护,现在无法处理请求
View Info

代理
  代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端

网关
  网关是转发其它服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关

隧道
  隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双发通信连接的应用程序

缓存
  缓存服务器是代理服务器的一种,当代理转发服务器返回的响应时,代理服务器会保存一份资源的副本,可避免多次从源服务器转发资源

HTTP首部字段

通用首部字段(请求和响应附带)
    # Cache-Control              控制缓存的行为
    # Connection                  逐跳首部、连接的管理
    # Date                           创建报文的日期时间
    # Pragma                       报文指令
    # Trailer                         报文末端的首部一览
    # Transfer-Encoding        指定报文主体的传输编码方式
    # Upgrade                      升级为其它协议
    # Via                             代理服务器的相关信息
    # Warning                      错误通知

请求首部字段 
    # Accept                        用户代理可处理的媒体类型
    # Accept-Charset            优先的字符集
    # Accept-Encoding          优先的内容编码
    # Accept-Language         优先的语言
    # Authorization               Web认证信息
    # Expect                        期待服务器的特定行为
    # From                           用户的电子邮件地址
    # Host                           请求资源所在服务器地址
    # If-Match                      比较实体标记(Etag)
    # If-Modified-Since          比较资源的更新时间
    # If-None-Match             比较实体标记(与If-Match相反)
    # If-Range                     资源未更新时发送实体Byte的范围请求
    # If-Unmodified-Since     与If-Modified-Since相反
    # Max-Forwards              最大传输逐跳数
    # Proxy-Authorization      代理服务器要求客户端的认证信息
    # Range                         实体的字节范围请求
    # Referer                        对请求中URI的原始获取方
    # TE                              传输编码的优先级
    # User-Agent                  HTTP客户端身份

响应首部字段
    # Accept-Ranges             是否接受字节范围请求
    # Age                             推算资源创建经过时间
    # Etag                            资源的匹配信息
    # Location                      令客户端重定向至指定URI
    # Proxy-Authenticate       代理服务器对客户端的认证信息
    # Retry-After                  对再次发起请求的时机要求
    # Server                         HTTP服务器的安装信息
    # Vary                            代理服务器缓存的管理信息
    # WWW-Authenticate       服务器对客户端的认证信息

实体首部字段
    # Allow                           资源可支持的HTTP方法
    # Content-Encoding         实体主体使用的编码方式
    # Content-Language        实体主体的自然语言
    # Content-Length            实体主体的大小(单位:字节)
    # Content-Location          替代对应资源的URI
    # Content-MD5                实体主体的报文摘要
    # Content-Range             实体主体位置范围
    # Content-Type               实体主体的媒体类型
    # Expires                        实体主体过期的日期时间
    # Last-Modified               资源的最后修改日期时间
View Info

重要字段解析

# Transfer-Encoding
    规定了传输报文主体时采用的编码方式

# Accept 
    用户代理能够处理的媒体类型及媒体类型的相对优先级
    text/html,text/plain,text/css
    application/xhtml+xml,application/xml
    image/jpeg,image/gif,image/png
    video/mpeg,video/quicktime

# Content-Type
    实体主体内对象的媒体类型

# Accpet-Charset
    通知服务器用户代理支持的字符集及字符集的相对优先顺序

# Accept-Encoding
    告知服务器用户代理支持的内容编码及内容编码的优先级顺序
    gzip,compress,deflate,identity

# Content-Encoding
    告知客户端服务器对实体部分选用的内容编码方式

# Accept-Language
    告知服务器用户代理能够处理的自然语言集及自然语言集的相对优先级

# Content-Language
    告知客户端实体主体使用的自然语言

# Authorization
    告知服务器用户代理的认证信息

# Host
    告知服务器请求的资源所处的互联网主机名和端口号
    和单台服务器分配多个域名的虚拟主机工作机制有很密切的关联

# If-Match
    只有当If-Match的字段值根Etag值匹配时,服务器才会接受请求

# User-Agent
    将请求的浏览器和用户代理名称等信息传达给服务器

# Age
    告知客户端,源服务器在多久之前创建了相应,单位为秒

# ETag
    实体标识

# Location
    将响应接收方引导至某个请求URI位置不同的资源,配合重定向使用

# Content-Location
    报文主体部分对应的URI

# Server
    告知客户端当前服务器上安装的HTTP服务器应用程序的信息

# WWW-Authenticate
    用于HTTP访问认证

# Allow
    通知客户端能够支持Request-URI指定资源的所有HTTP方法

# Content-Length
    实体主体部分的大小

# Content-MD5
    报文主体MD5值,给客户端验证传输是否完整

# Expires
    资源失效的日期告知客户端
View Info

Cookie首部字段

Set-Cookie
    # expires
        指定浏览器可发送Cookie的有效期
        省略时,默认浏览器关闭Cookie失效

    # path
        限制指定Cookie的发送范围的文件目录

    # domain
        domain属性指定的域名可做到与结尾匹配一致
        指定example.com后,www.example.com和www2.example.com等都可以发送Cookie

    # secure
        限制Web页面仅在HTTPS安全连接时,才可以发送Cookie,非HTTPS的连接Cookie不会被回收

    # HttpOnly
        JS脚本无法获取Cookie,防止XSS攻击

Cookie
    Cookie主体,多个Cookie可以连续放置
View Info

Session
使用Cookie管理Session
客户端发送登陆信息进行身份认证,然后把用户的认证状态与Session ID绑定后记录在服务器端,返回响应时会在首部字段SetCookie内写入Session ID

扩展首部字段

# X-Frame-Options
    控制网站内容在其他Web网站的Frame标签内的显示问题,防止点击劫持攻击
    DENY:拒绝
    SAMEORIGIN:仅同源域名下的网页匹配时许可

# X-XSS-Protection
    控制浏览器XSS防护机制的开关
    XSS过滤设置,0 无效状态 1 有效状态

# DNT
    拒绝被精确广告追踪
同意被追踪
拒绝被追踪
View Code

HTTP的缺点
①通信使用明文,内容可能会被窃听
②不验证通信方的身份,因此有可能遭遇伪装
③无法证明报文的完整性,所以有可能已遭遇篡改

HTTPS 

HTTPS = HTTP + 加密 + 认证 + 完整性保护
HTTPS通信接口部分使用 SSL协议 和 TLS协议 替代
TCP建立阶段采用非对称加密认证,数据传输阶段采用对称加密
服务器端公钥合法性正确性由CA鉴定

相关推荐