HTTP状态码(包含代码演示)

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 HTTP状态码(包含代码演示),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

什么是状态码

        当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。HTTP 状态码的英文为 HTTP Status Code


        状态码码十分的多,几乎可以表示所有的正常/非正常情况,我们不需要全部掌握,但常见的状态码如200,302,304,404,500等要能够知道其意思,下面我们将对这5个常见的状态码进行演示。
        先来看一看状态码的分类,当我们看见状态码时根据分类可以先大概知道是什么意思

状态码的分类

  • 1** :信息,服务器收到请求,需要请求者继续执行操作
  • 2** :成功,操作被成功接收并处理
  • 3** :重定向,需要进一步的操作以完成请求
  • 4** :客户端错误,请求包含语法错误或无法完成请求
  • 5** :服务器错误,服务器在处理请求的过程中发生了错误

状态码都是以这些开头的,我们遇见状态码是第一时间先判断分类,了解大概的意思,然后进行排错,由于状态码很多,我这里只介绍最常见的5个,详细请参考状态码大全,遇见不认识的进行查询即可。下面我开始对常见的5个进行说明。


200状态码

        200状态码表示请求成功,比如,我们打开bilibili页面,进行抓包,我们可以看见状态码为200

HTTP状态码(包含代码演示)

 302状态码

        302状态码表示重定向,重定向就可以简单理解为有一个人是负责卖炸鸡的叫张三,而且很有名,附近买买炸鸡的都找他,但是有一天他的店搬迁了,但是买东西的人不知道,于是张三就在以前卖炸鸡的地方立了一块牌子,上面说炸鸡店搬迁了,要买炸鸡去xxx购买。这就是重定向的简单原理,下面为图示说明

HTTP状态码(包含代码演示)

        我们可以看见,实际上进行重定向游览器发出了2次请求,下面我们用代码模拟一下重定向,我们写一个登录页面,当用户登录时重定向到百度界面。下面分别给出html和servlet代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<form action="login" method="post">
    用户名:<input type="text" placeholder="请输入用户名"><br/>
    <button>登录</button>
</form>
</body>
</html>
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect("https://www.baidu.com");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}

        我们尝试进行登录,发现点击登录就跳转到了百度。

HTTP状态码(包含代码演示)

HTTP状态码(包含代码演示)

         我们抓包进行查看,发现状态码确实为302,游览器先向tomcat发送请求,然后在向百度服务器发送请求。

HTTP状态码(包含代码演示)

304状态码 

        304状态码表示服务器资源没有进行更新,游览器直接使用缓存进行展示,例如,游览器第一次请求时,页面所有资源都会请求,所以速度往往较慢,但当我们第二次打开这个页面时就会发现速度明显变快了,尤其是有很多图片展示的网页,因为游览器在第一次请求时就将请求的资源进行了缓存,当再次请求时就会和服务器进行一个校验,看是否发生修改,没有发生修改就不需要请求了,下面我们进行模拟。使用的html代码和图片如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<h1>这是亚丝娜</h1>
<img src="./ysn.png" alt="亚丝娜">
</body>
</html>

HTTP状态码(包含代码演示)

         我们将一张图片进行展示,然后说明304。第一次请求网页,网页正常显示,我们对其进行抓包查看。

HTTP状态码(包含代码演示)

        发现都是2个资源状态码都是200,表示请求成功,如果我们刷新网页会怎么样呢

HTTP状态码(包含代码演示)         

        发现hello.html已经变成了304,但是我们预想的应该是ysn,png也应该是304啊,因为没有修改过,我们点开ysn.png看一下

HTTP状态码(包含代码演示)         发现了200后面多了一句话,表示来自于缓存,但是感觉不是很直观,下面我们用Firefox进行相同操作看一下。

HTTP状态码(包含代码演示) HTTP状态码(包含代码演示)

        发现2次请求确实是304,表示资源没有变化,但是原理是说明呢,下面我们简单进行说明,其实游览器和服务器的校验是通过请求头的If-Modified-Since进行校验的

HTTP状态码(包含代码演示)

If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 

游览器收到304直接使用缓存进行展示。

404状态码

        这个状态码大家都不陌生了,就表示该资源不存在,我们在游览器随便输入一个网址看一下,这里我使用的是Firefox

HTTP状态码(包含代码演示)

500状态码 

        这个状态码表示资源存在,但是服务器发生异常,下面我们用代码进行演示,代码如下

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet("/error")
public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int[] nums = new int[2];
        System.out.println(nums[2]);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}

        我们可以知道这个代码运行就会报错,下面我们访问一下这个资源

HTTP状态码(包含代码演示)

发现就是报了500错误。


        通过上面例子,我们讲解了5个最常见的例子,这5个必须要掌握,这些都是开发中常见的状态码 ,其他的见多了就会了,遇见不清楚的状态码查询手册即可,状态码大全

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140330.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!