美文网首页不愿做个3流前端的3流前端
成为一个合格的前端工程师 - HTTP - 0

成为一个合格的前端工程师 - HTTP - 0

作者: ahole | 来源:发表于2017-04-19 13:55 被阅读20次

    前言

    HTTP 我打算阅读《HTTP权威指南》,并分章节做笔记。其中会漏掉我认为不是必要或者在那个章节还没有仔细说明的知识,因为感觉事无巨细的列出来是教科书的事。

    第一章

    第一章并没啥知识点

    MIME : HTTP传送的数据一般会放在请求体中,而请求体是二进制的数据, 所以理论上能支持众多数据类型。HTTP 对这些类型做了分类,叫做 MIME (Multipurpose Internet Mail Extension). 应用程序如浏览器接受到一个数据时,就会根据不同的 MIME 做分别处理。
    MIME 一般放在HTTP报文的首部中的 Content-type 中如 : Content-type: image/jpeg;

    第二章 URL 与资源

    URL 寻找信息所需的资源位置

    URL 的组成

    URL一般有9个部分(一般用不了9个)

    结构如下:

    <协议>://<用户>:<密码>@<端口号>/<路径>;<参数>?<查询词>#<哈希值>


    URL结构图

    自行 google ,一个个的介绍说了也记不住。

    URL 快捷方式

    并不是每一个URL都需要严格的写满访问资源所需的全部信息。

    这个知识点应该对爬虫程序也有帮助,因为工作的时候有个写爬虫的过来问我相关的知识

    举个例子:
    如果你在 www.baidu.com/xxx/xxx页面中有这样一个超链接

        <a href="./bbb.html">./bbb.html</a>
    

    这里的超链接地址是合法的。点击会发现页面跳转到 www.baidu.com/xxx/bbb.html 。这里的./bbb.html也是一个合法的 URL 。 这种 URL 叫做相对 URL 。但最后请求的 URL 也还是要是一个完整的URL吧。这就需要一套从相对 URL 到完整 URL 的规则。请看下面。

    基础 URL : 既然是相对 URL ,那么相对谁呢,相对的 URL 就叫做基础 URL
    还是上面 html 为例 (写前端的只知道这些。。)基础 URL 就是 www.baidu.com/xxx/bbb.html 全部,全部,全部。在html中有个显示改变基础 URL 的标签 <BASE> 有印象就行了,就没遇到过(希望你不会用到,维护起来应该摸不着头脑)。

    生成绝对 URL 规则如图:


    url拼接图

    总结:
    1.如果你的相对 URL 带协议的话,那这个就是最终的 URL 。
    2.相对URL如果非空,且带前置 / ,如 '/hello',最终URL等于基础URL路径替换为相对URL之后的URL。如 相对URL 为 ‘/hello', 基础URL为 ‘www.baidu.com/balabala/balabla'. 那么最后生成 www.baidu.com/hello.
    3.如果上两例都不是。那么就根据相对URL 缺少的部分与基础URL拼接。
    如。 ‘./babba’与‘www.baidu.com/path/path2#afwe’ ,生成 www.baidu.com/path/babba.

    个人测试demo:

    url-test-demo.jpg

    URL使用的编码

    当你在 URL 输入框输入中文的时候,你可能发现你输入的中文会变%xx%xx的形式(如果没有,请按 F12 查看Network)。这说明URL只支持部分字符。

    why ?

    1. 有部分协议只支持ASCII 码。如 SMTP
    2. URL 要求大家能看到,如果打入空格、换行符、甚至是一些不可见的字符如/u0000 ,从网络传输来讲这不算问题,但是对我们不太友好,毕竟看不见。所以URL也限制了协议字符。

    那么问题来了
    1.有时我们就需要用超过ASCII范文的字符,例如上例的搜索,难道我们要用http报文的请求体来发送数据吗,显然太麻烦,性能也不好。
    2.还记得上面的篇幅中URL的格式吧,里面有‘/','?','#’这样的字符,如果我们就想发送这些字符呢?怎么能不混淆

    how?

    答案是转译。就是有一套规定把这些不合法的字符转化为另一个格式。
    URL 的转译方法是使用 %% 的形式转换。
    再细分两种,一种应对与符合编码的非法字符 ASCII 。
    如 % -> 25(ASCII) -> %25;
    超过ASCII范围的字符,因为用不同的编码有不同的结果,所以没有说法。但是思路还是一样的。以‘中‘使用Unicode为例子
    中 -> 4E2D(Unicode) -> %4E%2D 。

    非ASCII范围的具体使用哪种编码情况很多,可以参考 关于URL编码 - 阮一峰 ,但是个人感觉这种前后端约定好就行了,那可能考虑那么多。

    url字符限制表.jpg

    结语

    第二章结束,好像没啥知识点。

    相关文章

      网友评论

        本文标题:成为一个合格的前端工程师 - HTTP - 0

        本文链接:https://www.haomeiwen.com/subject/qfdfzttx.html