zoukankan      html  css  js  c++  java
  • http知识梳理1

    http知识梳理1

    1.什么是协议

    计算机中的协议和现实中的协议是一样的,一式双份或多份,双方多方都遵从共同的一个规范,这个规范就可以称为协议。

    例如:ftp,http,stmp,pop,tcp/ip协议,离婚协议

    2.http协议

    2.1什么是http协议

    http协议即按一定规则,向服务器要数据,或发送数据,而服务器按一定规则,回应数据

    2.2请求和响应信息`


    response headers:
    HTTP/1.1 200 OK
    Date: Sat, 31 Aug 2019 04:00:37 GMT
    Content-Type: text/html; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Server: openresty
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Strict-Transport-Security: max-age=86400
    
    request headers:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cache-Control: max-age=0
    Connection: keep-alive
    Cookie: peoplePercentage=3;
    Host: blog.csdn.net
    Referer: https://blog.csdn.net/weixin_43042787/article/details/86026308
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
    

    2.3请求信息和响应信息的格式

    请求:

    1. 请求行:方法,路径,请求版本
    2. 请求头信息
    3. 空行
    4. 请求主体信息(可以没有)

    请求行:

    1. 请求方法
    2. 请求路径
    3. 所用协议

    请求方法

    1. GET
    2. POST
    3. PUT
    4. DELETE
    5. TRACE
    6. OPTIONS

    问:浏览器能发送HTTP协议,HTTP协议一定要浏览器发送吗?

    答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发

    2.4请求方法

    请求方法有哪些?

    GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS

    注意:这些请求方法虽然HTTP协议里规定的,但WEB服务器未必支持

    HEAD和GET基本一致,只是返回内容
    
    比如我们只是确认一个内容(比如照片)还存不存在,**不需要返回照片的内容**,这时候用HEAD比较合适
    
    TRACE:是你用了代理上网,比如代理访问news.163.con,你想看看代理有没有修改你的http请求,可以用TRACE来测试一下,news.163.con的服务器就会把最后收到的请求返回给你
    
    OPTIONS:是返回服务器可用的请求方法
    
    1、PUT和POST
    
    PUT和POS都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。
    
    PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)
    
    Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)
    
    get和post
    
    1、GET参数通过URL传递,POST放在Request body中。
    
    2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
    
    3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    
    4、Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。
    
    5、 一般我们在浏览器输入一个网址访问网站都是GET请求
    
    6、HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。
    
    7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
    
    8、在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
    

    2.5状态码和状态文字

    状态码:是用来反应服务器响应情况的

    最常见的如:200 OK,404 NOT FOUNT

    状态文字:是用来描述状态码的,便于人观察

    状态码 定义 说明
    1xx 信息 接收请求,继续处理
    2xx 成功 操作成功地收到,理解和接受
    3xx 重定向 为了完成请求,必须采取进一步的措施
    4xx 客户端错误 请求的语法有错误或不能完全被满足
    5xx 服务端错误 服务器无法完成明显有效的请求
    200-服务器成功返回网页
    301/302-永久/临时重定向
    304-未修改(取的缓存)
    404-请求的网页不存在
    503-服务器暂时不可用
    500-服务器内部错误
    
  • 相关阅读:
    ADB命令查看应用包名
    Centos7下安装nmon
    如何分析nmon监控数据?
    服务器性能监控工具软件Nmon和ServerAgent对比
    如何实时监测linux服务器性能
    jmeter ftp通过put方式上传压缩文件损坏的解决方法
    jmeter 对接口的响应值进行base64解码
    Fiddler如何开启捕获FTP请求功能
    性能测试之“响应时间”的理解
    jmeter如何断言请求响应成功?
  • 原文地址:https://www.cnblogs.com/sm1128/p/11438731.html
Copyright © 2011-2022 走看看