zoukankan      html  css  js  c++  java
  • 《HTTP

    推荐一首歌

      - 僕が死のうと思ったのは (曾经我也想过一了百了)

    也就听了几十遍而已

    经历一番波折,终于正式到了北京。

    刚开始是很艰难的,多走两步就好了,不是么。

    一:HTTP 基本报文组成

      -  

    二:请求报文(组成及实例)

      -      

      -      

    三:响应报文(组成及实例)

      -     

       -    

    四:HTTP 通用首部字段 (请求/响应 都会使用的首部)

       1:首部字段 Cache-Control 控制缓存行为 

         - public 和 private 的区别?

            - 设置Cache-Control:public 明确表明其他用户也可以利用缓存。

          - 设置Cache-Control:private (默认选项) 响应指以特定用户作对象。

          - 他们的区别更应该从用途上考虑

            - 公共内容[如icon,图片等] 更因该使用 public 公共区域缓存,减少宽带

            - 但是相反的,私有内容[如用户名]等,更因该使用私有缓存,否则所有人都可能通过代理服务器拿到你的信息。

            - 详细:Private vs Public in Cache-Control

         - Cache-Control:no-cache 不缓存过期的资源(会向服务端确认有效期)

         - Cache-Control:no-store  不缓存(表示请求中有机密信息)

         - Cache-Control:max-age=XXXXX(单位/秒)  设置缓存时间

         - PHP 简单实例

        • <?php
          header("Content-type:text/html;charset=utf-8");
          
          //用Cache-Control告诉浏览器有效期 60秒
          header("Cache-Control:max-age=60");//等同于Cache-Control:public, max-age=60
          $curr_time = date('Y-m-d H:i:s');
          echo '服务器时间:'.$curr_time;
          ?>
          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>Cache</title>
          </head>
          <body>
          <br>
              Time:<?php  echo $curr_time; ?>
          <br>
              <a href='cache_sample.php'>刷新时间</a>
          </body>
          </html>

      2:Connection 管理持久连接

        - Connection:close 明确表示断开持久连接

        - Connection:keep-alive 持久连接

      3:Data 表明创建 HTTP 报文的日期和时间

        - HTTP/1.1 中 使用 RFC1123规定的标准时间

      4:Pragma 向后兼容 HTTP/1.0 字段设立 (了解)

      5:upgrade 用于检测版本是否有更高效的通信方式

        - 比如升级为 websocket

      6:via 代理服务器的相关信息

        - 如果经过了代理服务器,会在 首部字段 Via 中加入代理服务器的信息

    四:HTTP 请求首部字段 (客户端 -> 服务端)

      1:Accept (表示用户可以处理的流媒体类型

        - 通知服务器,用户(浏览器可以处理的媒体类型及其优先级)

        - 如果想要给显示的媒体类型增加优先级(也叫品质因子),则使用 q= 表示权重,用(;)分割,最大值是 1 ,默认 q=1

        - 例如 

          - Accept:text/xml; q=0.3, text/html; q=1

          - 这句话的意思是:我请求的资源最好是 q = 1 的 html 资源,如果不行的话,发给我 xml 格式也可以

      2:Accept-Charset 表示用户可以处理的字符集

        - 支持 q= 的优先级

        - 例如:

          - Accept-Charset:iso-8859-5, unicode-1-1;q=0.8

      3:Accept-Encoding  表示用户支持的 编码类型

        - 同样支持 q= 的优先级。同样也可以使用(*)代表支持同样的优先级

        - 例如:

          - Accept-Encoding : gzip, deflate

      4:Accept-Language 指定用户可以处理的语言类型

        - 支持 q= 的优先级

        - 例如

          - Accept-Language : zn-ch , zh ; q=0.7 , en-us , en , q=0.3

          - 意思为:如果服务器有中文版资源时候,最好优先返回给我中文资源(高优先级),如果没有中文,返给我英文版也可以(低优先级)

      

      5:Host 请求资源所处的主机与端口号

      6:Range 部分资源范围的请求

      7:Referfer 告知服务器请求的原始资源 URI 

     

      8:User-Agent 用于传达浏览器种类

      9:Authorization  HTTP基本认证

        - 包含了账户密码的 base64 编码

         - WWW-Authenticate HTTP访问认证-发起认证

        - 使用 PHP 实现简单的 HTTP 基本认证

      • <?php
        
        header("Content-type: text/html; charset=utf-8");
        
        function validate($user, $pass) {
            if ($user == 'admin' && $pass == 'admin') {
                return true;
            }
            else {
                return false;
            }
        }
        
        if(!validate(@$_SERVER['PHP_AUTH_USER'], @$_SERVER['PHP_AUTH_PW'])) {
            http_response_code(401);
            header('WWW-Authenticate:basic '); //对话框显示 http://127.0.0.1:80
            echo '需要用户名和密码才能继续访问'; //取消时浏览器输出
            exit;
        } else {
            var_dump($_SERVER['PHP_AUTH_USER']);
            var_dump($_SERVER['PHP_AUTH_PW']);
        }
         

    五:HTTP 响应首部字段 (客户端 <- 服务端)

      1:location 引导接收方至摸个 URI 常配合 3XX,提供重定向

      2:Server 服务器上HTTP应用的处理者。

    六:HTTP 实体首部字段 (请求报文和响应报文共同使用,补充内容实体部分)

      1:Content-Encode     客户端/服务端 对内容的编码方式。

      2:Content-Language 服务端告知客户端,实体所使用的语言。

      3:Content-Lngth       服务端表明了实体数据的大小

      4:Content-Location   报文主体资源的URI

      5:Content-MD5        服务端表名了实体数据的MD5值

      6:Content-Type        表明实体部分的媒体类型

    七:其他首部信息

      1:httpOnly 防止XSS跨站脚本攻击对于Cookie的窃取

  • 相关阅读:
    【001】JS解析,反解析XML的一些问题
    [ Java面试题 ]并发篇
    [ Java面试题 ]WEB篇
    [ Java面试题 ]算法篇
    [ Java面试题 ]数据库篇
    [ Java面试题 ]泛型篇
    [ Java面试题 ]多线程篇
    [ Java面试题 ]持久层篇
    Java开发岗面试知识点解析
    [ SSH框架 ] Spring框架学习之二(Bean的管理和AOP思想)
  • 原文地址:https://www.cnblogs.com/25-lH/p/9416978.html
Copyright © 2011-2022 走看看