HTTP1.1协议

HTTP基础

关键词: 链接 会话 授权 请求 响应

HTTP(HyperText[‘haɪpɚ’tɛkst] Transport Protocol)是超文本传输协议的缩写。该协议用于从WWW服务器传输超文本到本地浏览器。

URL

  • 基础部分

    协议:包括HTTP、HTTPS、FTP等,非必须元素

    域名:可以使用域名或者IP地址,必须元素

    端口名:使用“:”作为分隔符,非必须元素

    虚拟目录:从域名后的第一个“/”开始到最后一个“/”为止,非必须元素

    文件名:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分,非必须元素

    参数:从“?”开始到“#”为止之间的部分为参数部分,参数可以允许有多个参数,参数与参数之间用“&”作为分隔符,非必须元素

    锚点:从“#”开始到最后,非必须元素

  • 短链接

    将长的URL网址,通过程序计算等方式,转换为简短的网址字符串

Request

  • 请求方法
方法描述
GET请求指定的页面信息,并返回实体主体
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
区别1.GET参数通过URL传递,POST通过Request body传递;2.URL传递导致传递参数有长度限制;3.GET产生一个TCP数据包,POST产生两个TCP数据包(网络情况良好中两次数据包时间花费可以忽略不计,两次数据包能提高数据完整和准确率,推荐POST)来自链接;4.安全性考量

+ URL

请求地址

  • 协议版本

    HTTP 包含1.0与1.1版本,1.0至1.1版本的升级包括

    • 无状态的连接导致浏览器请求服务器资源时,所有同源资源(比如一个HTML文件里的所有媒体文件)都必须经过建立连接,传输,断开连接的过程;1.1版本将同文件下的资源请求打包(一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接)
    • 1.1版本允许浏览器在未接受到服务端应答的情况下进行下一个请求,但是强制服务端按顺序返回
    • 添加了新的请求头、响应头
  • 请求头 来自链接

    • Content-Type:请求的与实体对应的MIME信息

      方法描述
      application/json传递的是JSON对象,通过序列化传递
      application/x-www-form-urlencoded表单提交,最终是&连接的数据集
      multipart/form-data参数会被分割成多块,每一个参数块都有自己独立的content-type,这种方式可以用于提交普通表单和文件上传
    • User-Agent:包含发出请求的用户信息

    • Referer:从该URL代表的页面出发访问当前请求的页面,可以用来防止盗链

Response

  • 协议版本

  • 状态码与状态消息 来自链接

    状态码状态消息描述
    1**信息,服务器收到请求,需要请求者继续执行操作
    2**成功,操作被成功接收并处理
    200OK请求成功。一般用于GET与POST请求
    3**重定向,需要进一步的操作以完成请求
    302Found浏览器重新请求location字段下发地址,相当于浏览器请求了2次;用于不同域名指向同一个地址
    304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源
    4**客户端错误,请求包含语法错误或无法完成请求
    403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
    404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置”您所请求的资源无法找到”的个性页面
    405Method Not Allowed客户端请求中的方法被禁止,出现于服务端未配置POST或GET方法时调用出现
    5**服务器错误,服务器在处理请求的过程中发生了错误
    500Internal Server Error服务器内部错误,无法完成请求
  • 响应头 来自链接
    • Date:当前的GMT时间,可以用setDateHeader来设置这个头以避免转换时间格式的麻烦
    • Content-Type:文档MIME类型,默认为text/plain,但通常需要显式地指定为text/html

Cookie与Session

  • Cookie

    • 流程

      Created with Raphaël 2.1.2 客户端 客户端 服务端 服务端 请求-用户认证 认证成功,生成Cookie 响应-setCookie 提取并存储Cookie 请求-用户认证-携带Cookie 响应-认证成功-返回信息 响应-认证失败-重定向-用户认证
    • 属性

      属性描述
      Domaincookie所属于哪个域或子域
      Pathcookie的所属路径
      Expire time/Max-agecookie的有效期;未指定,则为session cookie
      Secure
      HttpOnly浏览器脚本是否允许访问操作cookie
  • Session

    • 流程

      Created with Raphaël 2.1.2 客户端 客户端 服务端 服务端 首次request 创建新Session 返回数据及SessionID Cookie或URL的方式存储SessionID request携带SessionID 通过SessionID索引Session 返回数据 SessionID失效(被清除或者超时)

      注:会话超时并非通过服务端周期检索任务关闭实现,而是根据访问信息中的时间对比来实现的

    • 会话校验与HTTP协议幂等性 来自链接

      幂等性(idempotence[ai’dempətəns,-tənsi]):N次变换与1次变换的结果相同,在web中任意多次执行所产生的结果和影响均与第一次执行一致。

      基于幂等性,业务操作元需要标记唯一标识ID,所有的业务操作(增删改查)都必须使用该唯一标识符;但是在实际业务中,仅通过SessionID与唯一标识ID是无法保证安全的

      会话校验即在SessionID基础上使用通行令牌,令牌又服务端生成发送给客户端,客户端在请求中带上令牌,服务端校验该令牌,保证安全性

  • 相同点

    • 两者都是用来解决HTTP无状态问题,都是保存客户端信息的机制
  • 区别与用法
    • Cookie将信息保存在客户端,Session将信息保存在服务端
    • Cookie是保存在客户端的本地文件,在同一个服务器的任何请求中会带上Cookie
    • Session是针对每一个用户的,会分配SessionID,该SessionID任何请求都会带上,保存在客户端中
    • Cookie客户端可以禁用,如禁用可以通过分配在URL中保存
    • 安全角度,Session建立于用户维度,高于Cookie的站点域维度,更加安全
    • 服务端通过Cookie相关扩展头启用Cookie功能

跨域与JSONP

HTTPS

代理与NGINX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值