2018/08/03 《图解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 明确表示断开持久连接

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

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

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

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

6:via 代理服务器的相关信息(如果经过了代理服务器,会在 首部字段 Via 中加入代理服务器的信息)

7:Accept

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

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

  - 例如 

    - Accept:text/plain; q=0.3, text/html

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

8:Accept-Encoding 

  - 告诉用户支持的编码类型

  - 常用的编码类型

    - gizp

    - compress

    - deflate

    - identity 不执行压缩或者不会变化的格式

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

8:Accept-Language 

  - 指定用户可以处理的自然语言

  - 支持 q= 的优先级

  - 例如

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

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

  

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']);
}

10:X-Frame-Options 防止点击劫持

  - DENY 拒绝

  - SAMEORIGIN 仅仅是同源下的页面可以

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

其他的还有一部分,还没有实践,之后碰到了再回来补充这方面的知识。

猜你喜欢

转载自www.cnblogs.com/25-lH/p/9416978.html