6、HTTP入门

作者: 吴少在coding | 来源:发表于2017-12-10 13:56 被阅读34次

    李爵士发明了万维网,从此世界上的人便可以一起上网了

    主要包含三个概念 URI、HTTP(HyperText Transfer Protocol)、HTML(HyperText Markup Language)
    他还发明了以下技术:
    1、发明了第一个服务器
    2、发明了第一个浏览器
    3、写出了第一个网页

    名称 作用
    URI 俗称网址,通常用它得孩子URL
    HTTP 让你能够下载这个网页
    HTML 让你能看懂这个网页

    URI 分为 URL(Uniform Resource Locator)和URN

    URI 是统一资源标识符
    URL 是统一资源定位符,可以访问到某个网页的具体位置,就是我们平常所说的网址
    https://www.baidu.com/s?wd=hello&rsv_spt=1#5 通过这个你就可以访问到一个 "唯一的" 网址

    名字 作用
    https: 协议
    www.baidu.com 域名
    /s 路径
    wd=hello&rsv_spt=1 查询参数
    #5 锚点,就是你搜素的结果的div的id
    端口还没有学,但是完整的URL包括这6部分

    URN 是统一资源命名,类似于书籍的ISBN,唯一的一个编号


    DNS(Domain Name System)

    你输入一个网址,先向DNS去问一下,这个网址的ip,返会给你,然后就可以访问到了。

    • 输入域名
    • 可以返回对应的IP
    nslookup baidu.com
    ping baidu.com
    

    我们可以修改hosts,文件去访问谷歌

    C:\Windows\System32\drivers\etc\hosts
    # Github Start
    192.30.253.118  gist.github.com
    151.101.72.249  global-ssl.fastly.net
    

    服务器和浏览器的交互 ------server client HTTP之间的关系

    1、client发送请求

    curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
    
    //这是get请求
    > GET / HTTP/1.1
    > Host: www.baidu.com
    > User-Agent: curl/7.49.1
    > Accept: */*
    > frank: xxx
    
    curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"
    //这是post请求
    > POST / HTTP/1.1
    > Host: www.baidu.com
    > User-Agent: curl/7.49.1
    > Accept: */*
    > Frank: xxx
    
    curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
    //提交一些内容到百度
    > POST / HTTP/1.1
    > Host: www.baidu.com
    > User-Agent: curl/7.49.1
    > Accept: */*
    > Frank: xxx
    > Content-Length: 10
    > Content-Type: application/x-www-form-urlencoded
    >
    
    
    
    • 如果是获得数据用get
    • 如果是提交数据用post
      https://www.baidu.com 模仿用户登录,你的密码在 Form Data里面,打开network查看,一定记得 view source
      post请求.png
      post详解.png
      在浏览器和服务器交互的那块代码里面,没有带查询参数,下面这个是带参数的
    curl -s -v  -- "https://www.baidu.com/s...后面一堆参数"
    
    request的路径.png

    总结一下 请求和响应的基本格式

    • 请求的基本格式
    1、动词 路径 协议/版本号
    2、key1: value1
    2、key2: value2
    2、key3: value3
    2、key4: value4
    2、Content-Type: application/x-www-form-urlencoded
    2、Host: www.baidu.com
    2、User-Agent: curl/7.54.0
    3、 必然是一个换行,用以区分第2部分和第4部分
    4、 要上传的数据
    

    1.请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)
    2.第三部分永远都是一个回车(\n)
    3.动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
    4.这里的路径包括「查询参数」,但不包括「锚点」详见上图的请求路径
    5.如果你没有写路径,那么路径默认为 /
    6.第 2 部分中的 Content-Type 标注了第 4 部分的格式


    2、服务器开放80端口,接收请求,返回内容(响应)
    3、浏览器负责下载响应内容

    • 响应的基本格式
    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    Connection: Keep-Alive
    Content-Length: 2443
    Content-Type: text/html
    Date: Tue, 10 Oct 2017 09:14:05 GMT
    Etag: "5886041d-98b"
    Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
    Pragma: no-cache
    Server: bfe/1.0.8.18
    Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
    
    <!DOCTYPE html>
    <!--STATUS OK--><html> <head> 后面太长,省略了……
    
    1、协议/版本 状态码 解释
    2、key1: value1
    2、key2: value2
    2、key3: value3
    2、key4: value4
    2、Content-Length: 17931
    2、Content-Type: text/html
    3
    4 要下载的内容
    

    同样的Content-Type规定了第4部分要下载的内容

    常见状态码解释
    200 ok
    301 访问的内容永久转移了
    302 暂时的重定向 要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”)。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
    403 服务器已经理解请求,但是拒绝执行它
    404 你访问的文件不存在
    500 通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。没有给出具体错误信息
    502 服务器关闭 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
    

    相关文章

      网友评论

        本文标题:6、HTTP入门

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