• HTTP常见头域


      近期没需求,也没什么心情去看书,就总结一下自己以前看的HTTP协议基础内容吧。(会很乱,可能不适合一点都没接触过HTTP协议的人观看)

    一、HTTP Request header

    1、Cache头域

    if-Modified-since:缓存

    if-None-Match:可提高性能(在Response中添加ETag信息,客户端再次请求资源,Request中加入if-None-Match(ETag的值),服务器验证ETag,若没改变返回状态码304,有改变,返回状态码200)

    Pragma:防止页面被缓存

    Cache-Control:Response—Request遵循的缓存机制

      public:可以被任何缓存所缓存

      private:内容只缓存在私有缓存中

      no-cache:所有内容都不会被缓存

    2、Client头域

    Accept:浏览器可以接受的文件类型(Accept:text/html 表示浏览器可接受服务器返回的文件类型为text/html)

    Accept-Encodig:指定压缩方法,是否支持压缩,支持什么压缩方法(gzip、deflate)

    Accept-Language:浏览器申明自己的接收语言

    User-Accept:告知服务器客户端使用的操作系统与浏览器的名称和版本

    Accept-chareset:浏览器申明自己接收的字符集。如gb2312,UTF_8

    3、Cookie/Login头域

    Cookie:将cookie的值发送给服务器

    4、Entity头域

    Content-Length:发送给HTTP服务器的数据长度

    Content-Type:决定文件接收方将以什么形式、什么编码读取此文件

    5、Miscellaneous头域

    Referer:提供了Request的上下文信息,告诉服务器我是从哪个链接过来的

    A------>B(B的服务器从Referer中统计有多少用户是从A过来的)

    6、Transport头域

    connection:Keep—alive            TCP连接不会关闭

    connection:close                     一个Request完成后,TCP连接关闭

    7、Host:发送请求时,该报头域是必需的。主要用于指定被请求资源的Internet主机和端口号,通常从HTTP URL 中提取出来

    二、HTTP Response header

    1、Cache头域

    Date:生成消息的具体时间和日期

    Expires:浏览器在指定过期时间内使用本地缓存

    2、Cookie/Login头域

    P3P:用户跨域设置cookie,可以解决iframe跨域访问cookie的问题

    Set-Cookie:重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会生成一个set-cookie

    3、Entity头域

    ETag:与if-None-Match配合使用

    Last-Modified:用于指示资源的最后修改日期和时间

    Content-Type:Web服务器告知浏览器自己响应对象的类型和字符集

    Content-Length:指明实体正文长度,以字节方式存储的十进制数字表示。在数据下行中,要预先在服务器中缓存所有数据,然后所有数据一并发给客户端

    Content-Encoding:Web服务器表明自己用了什么压缩方式(gzip、deflate)压缩响应中的对象

    Content-Language:服务器告知浏览器自己响应的对象语言

    4、Miscellaneous头域

    Server:指明HTTP服务器的软件信息

    X-Powered-By:表明网站是用什么技术开发的

    X-AspNet-Version:如果网站是用Asp/Net开发的,这个header用来表明Asp/Net的版本

    5、Transport头域

    connection:Keep—alive            TCP连接不会关闭

    connection:close                     一个Request完成后,TCP连接关闭

    6、Location头域

    Location:用于重定向一个新的位置,包括新的URL地址

    三、网络分层(这个是顺手加上)

      下层只会向上层提供服务,但不会从上层获取服务。

    1、OSI模型(从低到高)

    物理层---->数据链路层---->网络层---->传输层---->会话层---->表示层---->应用层

    2、TCP/IP模型(从低到高)

    网络接口层------>网络层(IP)------>传输层(TCP、UDP)------>应用层(HTTP/FTP等协议)

    3、实际应用中的因特网协议栈

    物理层---->链路层---->网络层---->传输层---->应用层

    四、HTTP认证过程

    1、客户端发送HTTP Request给服务器;

    2、Request中未包含Authorization header,服务器会返回一个401错误给客户端,且在Response中的header“www-Authenticate”中添加信息;

    3、客户端将用户名和密码以base64加密后,放在Authorization中发送给服务器,认证成功;

    4、服务器将Authorization header中的用户名和密码去除,进行验证。如果验证通过,将根据请求发送资源给客户端;

      HTTP OAuth认证:OAuth对于http来说,就是放在Authorization header中的不是用户名密码,而是一个token(令牌)。

      客户端的使用:客户端若要跟“使用基本认证的网站”进行交互,将用户名密码加载Authorization header中即可。

  • 相关阅读:
    ABP
    妖道角
    检测空值,以及会不会出现mapping类型不一致的问题
    wcf服务契约代理链
    wcf服务契约继承
    win64+anaconda+xgboost(转)
    python中迭代问题
    ROC曲线和AUC值(转)
    python中split()和split(' ')的区别
    str和repr的区别(转)
  • 原文地址:https://www.cnblogs.com/zichuan/p/6126085.html
Copyright © 2020-2023  润新知