• 网络原理 - HTTP/HTTPS(4)


    HTTP响应详解

    认识"状态码"(status code)

    状态码表示访问一个页面的结果.(是访问成功,还是失败,还是其它的一些情况...).(响应结果如何)

    学习状态码 -> 为了调试问题. 写服务器时,按照状态码的含义正确使用.

    200 OK

    这是最常见的状态码,表示访问成功.

    抓包抓到的大部分结果都是200.

    例如访问搜狗主页.

    HTTP/1.1 200 OK
    Server: nginx
    Date: Thu, 10 Jun 2021 06:07:27 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    Vary: Accept-Encoding
    Set-Cookie: black_passportid=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; do
    Pragma: No-cache
    Cache-Control: max-age=0
    Expires: Thu, 10 Jun 2021 06:07:27 GMT
    UUID: 80022370-065c-49b0-a970-31bc467ff244
    Content-Length: 14805
    404 Not Found 

    没有找到资源.

    浏览器输入一个URL,目的就是为了访问对方服务器上的一个资源.如果URL标识的资源不存在,那么就会出现404.

    例如,在浏览器中输入 www.sogou.com/index.html,此时就在尝试访问sogou上的/index.html这个资源.

    如果输入正确,则可以正确访问到.但是如果输入错误,比如www.sogou.com/index2.html,就会看到404这样的响应.

    HTTP/1.1 404 Not Found
    Server: nginx
    Date: Thu, 10 Jun 2021 05:19:04 GMT
    Content-Type: text/html
    Connection: keep-alive
    Vary: Accept-Encoding
    Content-Length: 564

    404 Not Found

    404 Not Found



    nginx


     

    403 Forbidden

    表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登录后才能访问).如果用户没有登录直接访问.

    例如:查看码云的私有仓库,如果不登录,就会出现403.参考链接:

    https://gitee.com/HGtz2222/blog_python

    HTTP/1.1 403 Forbidden
    Date: Thu, 10 Jun 2021 06:05:36 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    Keep-Alive: timeout=60
    Server: nginx
    Vary: Accept-Encoding
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    X-UA-Compatible: chrome=1
    Expires: Sun, 1 Jan 2000 01:00:00 GMT
    Pragma: must-revalidate, no-cache, private
    Cache-Control: no-cache
    Set-Cookie: oschina_new_user=false; path=/; expires=Mon, 10 Jun 2041 06:05:40 -0
    Set-Cookie: gitee-session-n=ejEvQnYza2RlaXh0KzRaN3QrNWI2TzdLOE03bU5UNjRKdGlqWUFk
    X-Request-Id: 82a740fb98838c305c4cc597ab6f48c0
    X-Runtime: 0.020299
    Content-Length: 7092

     



    您的访问受限 (403)

    405 Method Not Allowed

    前面我们已经学习了HTTP所支持的方法,有GET,POST,PUT,DELETE等.

    但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其它的方法).

    500 Internal Server Error

    服务器出现内部错误.一般是服务器代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码 .

    咱们平时常用的网站很少会出现500(但是偶尔也能看到).

    504 Gateway Timeout

    当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,导致出现超时的情况.(访问服务器超时:服务器挂了/网挂了).

    这种场景经常在双十一等"秒杀"场景中容易出现,平时不太容易见到.

    302 Move temporarily

    临时重定向. (明明访问的是A,A说:去找B,浏览器就会自动去访问B). 一旦一个网站的域名修改,很多老的用户,仍然会使用旧的域名访问,为了老用户的使用不受影响,就把访问老域名的请求重定向至新域名.

    理解"重定向".

    就相当于手机号码中的"呼叫转移"功能.

    比如我本来的手机号是186-1234-5678, 后来换了一个新号码134-1234-5678,那么不需要我的朋友知道新号码,

    只需要去办理一个呼叫转移业务,其它人拨打186-1234-5678,就会自动转移到134-1234-5678

    在登录页面上经常会见到302.用于实现登录成功后自动跳转到主页.

    响应报文的header部分会包含一个Location字段,表示要跳转到哪个页面.

    例如:码云的登录页面 https://gitee.com/login
     抓包看到的响应结果:

    HTTP/1.1 302 Found
    Date: Thu, 10 Jun 2021 06:49:26 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    Keep-Alive: timeout=60
    Server: nginx
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    X-UA-Compatible: chrome=1
    Expires: Sun, 1 Jan 2000 01:00:00 GMT
    Pragma: must-revalidate, no-cache, private
    Location: https://gitee.com/HGtz2222
    Cache-Control: no-cache
    Set-Cookie: oschina_new_user=false; path=/; expires=Mon, 10 Jun 2041 06:49:24 -0
    Set-Cookie: gitee_user=true; path=/
    Set-Cookie: gitee-session-n=UG5CdVZQUkVUamxsWis3b0JoL2dyTDRLVTk1WXVCK2VwaGd0OGFK
    X-Request-Id: d45ade01dbeffc99a3688d3411b3381f
    X-Runtime: 0.133587
    Content-Length: 92

    You are being redirected 

     可以看到header中的Location: https://gitee.com/HGtz2222,接下来浏览器就会自动发送GET请求,获取: https://gitee.com/HGtz2222.

    301 Moved Permanently

    永久重定向.当浏览器收到这种响应时,后续的请求都会自动改成新的地址.(如果是永久重定向,浏览器就会将重定向结果记录).

    301也是通过Location这个字段表示要重定向到的新地址.

    状态码小结

    类别原因短语
    1XXlnformational(信息性状态码)接收的请求正在处理
    2XXSuccess(成功状态码)请求正常处理完毕
    3XXRedirection(重定向状态码)需要进行附加操作以完成请求
    4XXClient Error(客户端错误状态码)服务器无法处理请求
    5XXServer Error(服务器错误状态码)服务器处理请求出错

  • 相关阅读:
    招投标系统软件源码,招投标全流程在线化管理
    【ES】笔记-Class类剖析
    “出海”掘金,程序员为何要奔赴新的战场?
    CSS 滚动驱动动画 scroll()
    【HTML+CSS】静态网页设计期末大作业——我的家乡无锡印象
    gitlab 保姆级重置管理员密码
    服务器Centos7 静默安装Oracle Database 12.2
    【力扣题解】1656. 设计有序流【每日一题】
    学到一招 chrome 浏览器 debug 悬浮样式
    IDEA构建Maven JavaSE工程的全面指南
  • 原文地址:https://blog.csdn.net/asdssadddd/article/details/136205681