超文本传输协议
    文本指浏览器可以解析的文字,图片,视频,音频,压缩包等,超文本就是各种文本的混合体,并且含有超链接,能从一个超文本跳转到另一个超文本,形成复杂的网状结构
    HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

    HTTP报文格式,请求报文是请求行(方法get post put,URL,版本号),响应报文是响应行(包括状态码,版本号,原因)
    image.jpeg

    头部字段(key-value)
    image.jpeg

    host(请求字段,只能出现在请求头,用来表示访问的主机名,必须要求)
    user-agent(请求字段,用一个字符串来标示客户端,这个字段可以伪装意义不大)如果有些爬虫比较诚实的话可以用来反爬虫
    date(表示http报文创建的时间,可以用来决定是否使用缓存策略)
    connection(keepalive选项)
    content-type text,vedio,image,application/json (js)
    content-encoding 压缩gzip
    content-length表示body内容的编码和长度

    image.jpeg

    GET 一般是从服务器获取资源
    HEAD 也是获取资源但是只会回应头部,也就是资源的元信息(想要检查一个文件是否存在,只要发个 HEAD 请求就可以了,没有必要用 GET 把整个文件都取下来。再比如,要检查文件是否有最新版本,同样也应该用 HEAD,服务器会在响应头里把文件的修改时间传回来。)
    POST和PUT都可以传输数据给服务器,POST倾向于创建而PUT倾向于修改数据(PUT用的比较少有的服务器禁止了PUT方法)
    其他字段,delete删除资源(对资源做删除标记先,也可以不处理),options服务器列出可以执行的方法
    GET,HEAD安全且幂等,POST不幂等,PUT幂等

    如果你不仅可以回答GET POST,其他的如 HTTP1.1 新增的请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
    PUT 从客户端向服务器传送的数据取代指定的文档的内容;
    DELTE 请求服务器删除指定的页面。
    CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的*服务器。
    TRACE 回显服务器收到的请求,主要用于测试或诊断。
    OPTIONS 允许客户端查看服务器的性能。
    PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

    等都可以回答出来。
    是不是就会有些不一样呢?

    状态码
    1开头:提示信息,表示还需要进一步操作,比如返回101要求在http基础上改成其他协议通信比如websocket
    2开头:表示报文被收到并且正确处理,不如说200表示一切正常,204表示处理成功但是返回的数据没有body数据
    3开头:表示重定向,资源的位置发生了变动,需要重新发起请求,比如301表示永久重定向,302暂时重定向,然后浏览器会重定向到返回报文的location字段的URL
    4开头:表示客户端错误,(400表示通用错误,但是没有告知是报文有错误还是缺少请求头还是 URI 超长),403表示禁止访问资源,404表示资源在服务器中没找到
    5开头:服务器在处理请求的时候发生了错误(500也是一个通用错误),501表示功能暂未支持,502表示服务器做为网关或者代理的时候访问下一个服务器发生错误(比如nginx配置有问题)
    因为http状态码很有限,而且含义不是很清楚,所以通常需要在body里返回额外的数据来说明更详细的错误原因,常用的就是json了。

    http优点和缺点
    简单灵活容易扩展,状态码头部字段请求方法都可以开发者自由扩展,而且没有指定下层协议,可以整合TLS/SSL,基于udp的QUIC,跨语言跨平台
    明文(头部)导致不安全,优点是利于调试