zoukankan      html  css  js  c++  java
  • 【网络】HTTP知识点(2)

    1.HEAD请求方法

    方法与GET方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返回请求的实体数据,只会传回响应头,也就是资源的“元信息”。

    HEAD方法可以看做是GET方法的一个“简化版”或者“轻量版”。因为它的响应头与GET完全相同,所以可以用在很多并不真正需要资源的场合,避免传输body数据的浪费。
    例子:检查服务器是否存在某个文件。使用HEAD方法
    2.
    POST也是一个经常用到的请求方法,使用频率应该是仅次于GET,应用的场景也非常多,只要向服务器发
    送数据,用的大多数都是POST。
    可以这样理解:POST新增或提交   PUT替换或更新
    3.
    “安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改
    例如说 GET/HEAD就是安全的  PUT/POST/DELETE会对服务器资源进行操作就不是安全的
    4.
    幂等:执行多次相同的操作之后 结果应该是相同的。即多次”幂“之后结果相等。
    显而易见 GET HEAD肯定是安全又幂等的。DELETE对于重复删除一个不存在的文件也是幂等的。
    POST是新增或提交 不是幂等
    PUT是替换或更新 替换或更新后就不会再变了 所以幂等。
    5.
    主机名可以是域名或者IP地址形式的 必须要有。
    但是端口号不一定需要。可以根据协议来确定默认的端口号进行确认:

    (1,HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)

    (2,HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp  443/udp

    (3,HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098

    (4,SOCKS代理协议服务器常用端口号:1080

    (5,FTP(文件传输)协议代理服务器常用端口号:21

    (6,Telnet(远程登录)协议代理服务器常用端口号:23

    查询参数从一个   ?  开始 是一个个的Key-Value值。

    6.

    如果在path或者query里面出现了”&@?“等限定字符怎么办

    直接把非ASCII码或特殊字符转换成十六进制字节值,然后前面再加上一个“%”   比如说   空格   就是”%20“
    那么中文、日文等汉字通常先使用UTF-8进行编码然后进行上面所说的进行转义     银河”会被转义成“%E9%93%B6%E6%B2%B3”。

     7.

    状态码分析;

    1xx:表示到达协议中间状态,需要后续操作

    2xx:成功,报文被接受和正确处理

        200 OK一切正常。

        204 Not content 也是成功 但是返回的响应报文没有body数据

        206 Partial Content 在HTTP分块下载时用到,body部分是资源的一部分。

    3xx:重定向,资源位置发生变化,需要重新发送报文

        301 永久重定向

        302 临时重定向

        304 Not modified  重定向到缓存页面

    4xx:客户端错误,请求报文有问题,服务器无法处理

        400 Bad Request  客户端错误通用码

        403 Frorbidden 服务器禁止访问

        404 Not found 服务器没找到资源

        405 Method Not Allowed:不允许使用某些方法操作资源,例如不允许POST只能GET;

        406 Not Acceptable:资源无法满足客户端请求的条件,例如请求中文但只有英文;

        408 Request Timeout:请求超时,服务器等待了过长的时间;
        409 Conflict:多个请求发生了冲突,可以理解为多线程并发时的竞态;
        413 Request Entity Too Large:请求报文里的body太大;
        414 Request-URI Too Long:请求行里的URI太大;
        429 Too Many Requests:客户端发送了太多的请求,通常是由于服务器的限连策略;
        431 Request Header Fields Too Large:请求头某个字段或总体太大;
     

    5xx:服务器错误,服务器处理请求时内部发生错误

        500 Internal server error 服务器错误通用码

        501 Not implmented 还没开放

        502 Bad Gateway  服务器作为网关返回的错误码

        503 Service Unavilable 服务器目前忙 访问不到

    8.HTTP的特点

    灵活可扩展

    可靠传输(背靠TCP/IP)

    应用层协议

    请求应答

    无状态

    9.请求——应答模式导致了HTTP的队头阻塞

    对头阻塞:

    由于HTTP是 一放一接 的模式,不等不形成一个串行队列,必须前面的请求应答完 才能处理后面的请求

    10.

    MIME type表示body的数据类型 用type/subtype表示

    Encoding type是表示以何种压缩方法进行压缩的

     11.

    针对于上面2种type 在响应头字段和请求头字段有accept和content字段

    accept请求头字段:表示希望接受什么类型数据

    content响应头字段:表示实际发送了什么类型数据

     12.

    语言类型的分隔符是-

    比如说 en-US en-GB  zh-CN等等

    13.

    Accept-Languange可接受的语言类型

    Content-Language实际发送的语言类型

    Accept-Charset可接受的字符集(GBK ,UTF-8)

    Content-Charset实际发送使用的字符集

     14.

    内容协商(优先级)

     15.

     16.

    传送大文件的方式:用压缩算法(gzip等)、分块传输

    Transfer-Encoding:chunked(块)

    这个字段和content-length不能同时出现 因为无法计算长度

    17、

    短链接 由于需要大量重复的TCP握手挥手过程,所以效率低下

    长连接 由字段Connection:Keep-alive保持tcp的链接  在HTPP/1.1后默认启动长连接

    由于大量长连接会导致服务器资源枯竭,所以Nginx有两个机制:

    keepalive_timeout一个链接的最长链接时间 过时则断开

    keepalive_requests一个链接的最多需求,比如请求超过100次 断开连接

    18.

    对头阻塞的解决办法:

    并发连接,对一个域名同时并发多个连接

    域名分片

    19.

    301永久重定向

    302临时重定向

    在响应报文中如果由Location字段 则会浏览器自动跳转到location字段后面的url

    url可以是绝对路径的 也可以是相对的

    分析腾讯的网页跳转

     

     

    使用重定向时的注意事项:

    注意不要出现 循环跳转A->B->A

    每次跳转都需要一个应答 浪费性能

    20.

    cookie是请求报文里的

    set-cookie是响应报文里的

    可以在set-cookie加入cookie的过期时间

    expires 过期时间 绝对的时间点

    max-age 最大相对时间过去 是相对的 响应时刻+最大时间

    domain 域名  可以在输入的url判断是否发送cookie

    path 路径

    属性httponly   只允许通过http协议访问cookie

    属性secure  只允许https访问

  • 相关阅读:
    大数据经典学习路线(及供参考)
    Redis配置规范
    mysql中datetime和timestamp类型的区别
    bigint(10)和bigint(20)的区别
    Redis分布式锁,基于StringRedisTemplate和基于Lettuce实现setNx
    Spring security UserDetailsService autowired注入失败错误
    Java Print 打印
    Spring boot Junit Test单元测试
    RESTful作用与特性
    JS匿名函数理解
  • 原文地址:https://www.cnblogs.com/cckong/p/14332301.html
Copyright © 2011-2022 走看看