zoukankan      html  css  js  c++  java
  • 关于http协议

    定义:

    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中

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/sker/p/5912169.html
Copyright © 2011-2022 走看看