HTTP项目常见状态码笔记(200,302,400,403,404,405,500...),

news2024/11/25 6:42:46

目录

认识 "状态码" (status code)

出现200

403 Forbidden

出现404 404 Not Found

出现 405 Method Not Allowed

出现 500 Internal Server Error

504 Gateway Timeout

302 Move temporarily

301 Moved Permanently

出现 "空白页面"  

出现 "无法访问此网站"


认识 "状态码" (status code)

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

出现200

这是一个最常见的状态码 , 表示访问成功 .
抓包抓到的大部分结果都是 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; domain=.sogou.com
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
<!DOCTYPE html><html lang="cn"><head><meta name="viewport" 
content="width=device-width,minimum-scale=1,maximum-scale=1,userscalable=no"><script>window._speedMark = new Date(); window.lead_ip = 
'1.80.175.234';
......
注意 : 在抓包观察响应数据的时候 , 可能会看到压缩之后的数据 , 形如

 网络传输中 "带宽" 是一个稀缺资源, 为了传输效率更高往往会对数据进行压缩.

点击 Fiddler 中的即可进行解压缩, 看到原始的内容 .

 

403 Forbidden

表示访问被拒绝 . 有的页面通常需要用户具有一定的权限才能访问 ( 登陆后才能访问 ). 如果用户没有登陆直接访问, 就容易见到 403.
例如 : 查看码云的私有仓库 , 如果不登陆 , 就会出现 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 -0000
Set-Cookie: gitee-session
n=ejEvQnYza2RlaXh0KzRaN3QrNWI2TzdLOE03bU5UNjRKdGlqWUFkMlJ2YktWYTRtcEtIVExOZ
EdJSFJFSkdiWmcxNmhjSTdneUZFaHFtalNKQUJWcDlUNDZYd2lBaElXNy9FaWRHQkl4d2RsS1RI
WnRCNFphQm5JUjZOdjdsSDh5TlNvZ3hZdTBXNXUrU2c2azN2UVNFOWwyQnJvQzZ6MEluaEFFYnR
oV0luOFlNWEEzWlR0K1g4WDlQRjNkSlNjZ1pUMGc0YkhreVNJMUV4YkVUUk0weXFqbGhQYzN5dj
A2bFJyc3o4MHRVWkkxcHdQVG5abmJ2NmlqV1dEYjlWaUpNNno3UGFpZ3lsb1RqeXAranFHRlE9P
S0tdU5JMGZ3UUpwODRYdjF1MXdyYmFKUT09-
-52babe9c2dcb63fa02bc32d25bc0e854f4065f5f; domain=.gitee.com; path=/;
HttpOnly
X-Request-Id: 82a740fb98838c305c4cc597ab6f48c0
X-Runtime: 0.020299
Content-Length: 7092
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>您的访问受限 (403)</title>
......

出现404 404 Not Found

404表示用户访问的资源不存在,大概率是URL的路径写的不正确

错误实例 1 : 少写了 Context Path
通过 /hello 访问服务器

 

错误实例 2 : 少写了 Servlet Path
通过 /ServletHelloWorld 访问服务器

 

错误实例 3: Servlet Path 写的和 URL 不匹配
修改 @WebServlet 注解的路径

 

重启 Tomcat 服务器 .
URL 中的路径写作 "/hello" , 而代码中写作的 Servlet Path "/helloServlet", 两者不匹配 .

 

错误实例 4: web.xml 写错了
清除 web.xml 中的内容

 

重启 Tomcat 服务器 .
通过浏览器访问 URL, 可以看到 :

 

Tomcat 启动的时候也有相关的错误提示

 

出现 405 Method Not Allowed

405 表示对应的 HTTP 请求方法没有实现.
HTTP 中所支持的方法 , GET, POST, PUT, DELETE .
但是对方的服务器不一定都支持所有的方法 ( 或者不允许用户使用一些其他的方法 ).
错误实例 : 没有实现 doGet 方法 .
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
}

重启 Tomcat 服务器.

在浏览器中访问 , 可以看到 :

 

在浏览器地址栏直接输入 URL , 会发送一个 HTTP GET 请求 .
此时就会根据 /ServletHelloWorld/hello 这个路径找到 HelloServlet 这个类 . 并且尝试调用
HelloServlet doGet 方法 .
但是如果没有实现 doGet 方法 , 就会出现上述现象.

出现 500 Internal Server Error

往往是 Servlet 代码中抛出异常导致的.
服务器出现内部错误 . 一般是服务器的代码执行过程中遇到了一些特殊情况 ( 服务器异常崩溃 ) 会产生这个状态码.
咱们平时常用的网站很少会出现 500 ( 但是偶尔也能看到 ).
错误实例 :
修改代码
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        String s = null;
        resp.getWriter().write(s.length());
   }
}
重启 Tomcat 服务器 .
重新访问页面 , 可以看到 :

 在页面上已经有具体的异常调用栈.

异常信息里已经提示了出现异常的代码是 HelloServlet.java 的第 13 .

resp . getWriter (). write ( s . length ());
仔细检查这里的代码就可以看到空指针异常。

504 Gateway Timeout

当服务器负载比较大的时候 , 服务器处理单条请求的时候消耗的时间就会很长 , 就可能会导致出现超时的情况.
这种情况在双十一等 " 秒杀 " 场景中容易出现 , 平时不太容易见到 .

302 Move temporarily

临时重定向 .
理解 " 重定向 "
就相当于手机号码中的 " 呼叫转移 " 功能 .
比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋友知道新号码,
只要我去办理一个呼叫转移业务 , 其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678上.
在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页 .
响应报文的 header 部分会包含一个 Location 字段 , 表示要跳转到哪个页面 .
例如: 码云的登陆页面 https://gitee.com/login
抓包看到的响应结果:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>您的访问受限 (403)</title>
......

可以看到 header 中的 Location: https://gitee.com/HGtz2222 , 接下来浏览器就会自动发送
GET 请求, 获取 https://gitee.com/HGtz2222
301 Moved Permanently
永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址. 
301 也是通过 Location 字段来表示要重定向到的新地址. 
状态码小结
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 -0000
Set-Cookie: gitee_user=true; path=/
Set-Cookie: gitee-sessionn=UG5CdVZQUkVUamxsWis3b0JoL2dyTDRLVTk1WXVCK2VwaGd0OGFKdjBjdjB4K0RiWTh2ZmhrZ
GM1cU0vOFN2VGdNcVY5dU5rSzZHeVFBcVZ3OTBaSmZmZzRYQUdsa2tHMnFIeU9SQlN4Z2pleDNM
Y3ExZUF6QWpHTHlVeTZOWFVHSVBxbTVuZGJpandHekdaRVBTUVd0ejZUNHNvTllSODBiNHd6NWN
CRUZ0UzZCZW1mRTBZUUdmOE5JTWVKdnJMMzdQcHFBMk5nUmNjMWpmc3daTElYU2hhbkEwQm41NH
NlZ2RwM3QxSjZMTndSNjcyNDd6YUVoS0ZmUWpLTDQ2KzlzZVowZTFLaUNPTmVDajVOb2k0MWFRc
GkzWVQ2QUxuWXJLeTRqL2JHaUE9LS0xYlVDOWVkc0JiM2xucVk0am1LRHFnPT0%3D-
-58854ce81d6c67bb7b9a0fdd6fe18a8ebdb3d753; domain=.gitee.com; path=/; 
HttpOnly
X-Request-Id: d45ade01dbeffc99a3688d3411b3381f
X-Runtime: 0.133587
Content-Length: 92
<html><body>You are being <a 
href="https://gitee.com/HGtz2222">redirected</a>.</body></html>
可以看到 header 中的 Location: https://gitee.com/HGtz2222 , 接下来浏览器就会自动发送
GET 请求, 获取 https://gitee.com/HGtz2222

301 Moved Permanently

永久重定向 . 当浏览器收到这种响应时 , 后续的请求都会被自动改成新的地址 .
301 也是通过 Location 字段来表示要重定向到的新地址 .

出现 "空白页面"  

错误实例 :
修改代码 , 去掉 resp.getWritter().write() 操作 .
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
       System.out.println("hello");
  }
}

重启服务器, 访问服务器, 可以看到一个空白页面:

 

抓包可以看到 , 响应 body 中的内容就是 " 空数据 "

 

出现 "无法访问此网站"


一般是 Tomcat 启动就失败了.

错误实例: Servlet Path 写错了.

 

应该写作 "/hello", Tomcat 在启动的时候已经提示了相关的错误 .
Tomcat 启动的日志里面报错信息可能比较多 , 需要耐心观察 , 找到关键的提示 .

 看到的现象:

 

熟悉 HTTP 协议能够让我们调试问题事半功倍 .
  • 4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及Servlet Path 是否一致.
  • 5xx 的状态码表示服务器出现错误, 往往需要观察页面提示的内容和 Tomcat 自身的日志, 观察是否存在报错.
  • 出现连接失败往往意味着 Tomcat 没有正确启动, 也需要观察 Tomcat 的自身日志是否有错误提示.
  • 空白页面这种情况则需要我们使用抓包工具来分析 HTTP 请求响应的具体交互过程.

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/661795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制作内网离线百度地图

下载离线地图瓦片 通过百度ak&#xff08;没有的可以去百度官网自行申请下载&#xff09;&#xff0c;拉取下列git 项目&#xff0c;可以免费下载离线瓦片 https://gitee.com/jinqianwang/baidu-offline-map-download 目录结构&#xff1a; 使用步骤&#xff1a; 第一步&am…

Midjourney绘画常用聊天界面介绍

刚开始使用MJ (Midjourney) 的小伙伴可能对这个复杂的界面有点迷糊&#xff0c;网站也无法翻译。 实不相瞒刚开始的时候我也一脸懵逼&#xff0c;对于小白来说启动门槛很高&#xff0c;但是认识之后就一点也不复杂。 接下来我们分三步认识Midjourney的界面: 第一步: 打开Mid…

基于Java+Swing+Mysql实现酒店管理系统

基于JavaSwingMysql实现酒店管理系统 一、系统介绍二、功能展示1.用户登陆2.首页3.开房4.退房5.房间信息6、顾客信息 三、数据库四、其它1.其他系统实现2.获取源码 一、系统介绍 系统功能&#xff1a;用户登陆、验证码验证、开房、退房、房间信息、顾客信息 运行环境&#xf…

【im群发推送软件】(Apple Push Notification service):APNs 是苹果提供的推送服务

iMessage 推送需要您对苹果的推送服务和相关开发技术有一定的了解&#xff0c;并熟悉应用程序开发的相关知识。以下是一些关键的方面和步骤&#xff0c;供您参考&#xff1a; 开发者账号和证书&#xff1a;您需要注册苹果开发者账号&#xff0c;并获取开发者证书用于推送服务。…

PEFAT:通过伪损失估计和特征对抗训练增强半监督医学图像分类

文章目录 PEFAT: Boosting Semi-supervised Medical Image Classification via Pseudo-loss Estimation and Feature Adversarial Training摘要本文方法Feature Adversarial Training 实验结果 PEFAT: Boosting Semi-supervised Medical Image Classification via Pseudo-loss …

PIQN:Parallel Instance Query Network for Named Entity Recognition

原文链接&#xff1a;https://aclanthology.org/2022.acl-long.67.pdf ACL 2022 介绍 问题 将命名实体识别任务作为阅读理解任务&#xff08;MRC&#xff1a;machine reading comprehensive&#xff09;来做&#xff0c;存在3个问题&#xff1a; 1&#xff09;一类问题只能提取…

腾讯云服务器可用区什么意思?怎么选择合适?

腾讯云服务器可用区是什么意思&#xff1f;可用区是指在同一个地域内电力和网络相互独立的区域&#xff0c;可用区可以做到故障隔离&#xff0c;所以可用区存在的意义在于构建高可用、高容灾应用&#xff0c;将应用部署在不同可用区内&#xff0c;一个可用区发生故障&#xff0…

Cisco MPLS VPN Option C1

一、拓扑 AR1和AR8是一家公司两个站点&#xff0c;现在通过MPLS VPN Option C1实现跨域互联 使用思科设备模拟 AR1到AR8各有一个loopback0接口分别是1.1.1.1 2.2.2.2 二、配置思路 1、先配置AS内底层网络 AR2 AR3 AR4配置eigrp实现互联 AR5 AR6 AR7同样方法 2、AS 10…

ChatGPT 更新:大杀器!函数调用示范

自ChatGPT 3.5/4 双双升级&#xff1a;更长&#xff0c;更便宜&#xff0c;更开放&#xff0c;更可控发出去之后&#xff0c;有朋友问怎么接入 API。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 什么是函数调用&#xff1f; 函数调用指 Chat-GPT 模型会自动逻辑判断后&#xff0c;调用在代…

如何让程序在后台隐藏窗口运行 - 静默运行器

有的时候你可能会想让一个程序或多个在后台运行&#xff0c;并隐藏其窗口界面。你可以使用静默运行器这款软件。 静默运行器是一款小巧的Windows系统工具软件&#xff0c;它可以轻松的让你在后台静默运行多个程序&#xff0c;隐藏程序窗口和界面&#xff0c;并提高或降低后台进…

在 Debian 12 上安装 KubeSphere 实战入门

老 Z&#xff0c;运维架构师&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 前言 知识点 定级&#xff1a;入门级KubeKey 安装部署 KubeSphere 和 KubernetesDebian 操…

【Python】函数进阶 ④ ( Lambda 匿名函数 | 具名函数与匿名函数 | Lambda 函数定义语法 )

文章目录 一、具名函数与匿名函数二、Lambda 函数定义语法三、代码示例 - Lambda 函数定义语法 一、具名函数与匿名函数 在 Python 中 , 使用 def 关键字定义的函数 是 " 具名函数 " , 也就是有名字的函数 ; 与 " 具名函数 " 相对应的是 " 匿名函数 …

DDR3引脚分配问题

前言 ddr3引脚分配基础知识ddr3引脚分配过程中遇到的问题一次作者在某项目设计时,应硬件同事要求,验证设计管脚摆放位置。出现的问题记录一下,以便以后避坑。 ddr3引脚分配基础知识 1.ddr3一个bank可以放置4个group。 2.每个group包括1对dqs差分信号,8个数据信号,1个dm信…

Nginx运维常用技术点总结

文章目录 一、简介&#xff1a;1、Nginx简介2、常用四大发行版 二、Nginx编译安装&#xff1a;1、Nginx编译安装2、Nginx目录结构3、Nginx 相关命令 三、Nginx配置文件解析1、最小配置2、虚拟主机3、匹配正则表达式 四、Nginx反向代理1、理论2、实践&#xff1a;Nginx反代代理T…

兼容性测试如何提高网站的安全性?

兼容性测试如何提高网站的安全性? 在今天的互联网时代&#xff0c;随着各种网络攻击和黑客活动的频繁发生&#xff0c;网站的安全性问题越来越引起人们的关注。而在提高网站安全性方面&#xff0c;兼容性测试是一个非常重要的环节。本文将从什么是兼容性测试、为什么兼容性测试…

【MySQL】数据库基础 ①

✍什么MYSQL是数据库&#xff1f; MySQL 是一个关系型数据库管理系统&#xff0c;它是基于关系模型的数据存储方式&#xff0c;以表格形式组织数据&#xff0c;并使用结构化查询语言 (SQL) 进行数据操作。MySQL 是一个流行的数据库管理系统&#xff0c;被广泛用于互联网应用和网…

Python基础(6)——Python输出

Python基础&#xff08;6&#xff09;——Python输出 文章目录 Python基础&#xff08;6&#xff09;——Python输出目标输出格式化输出1.1 格式化符号1.2 体验1.3 转义字符1.4 结束符 总结 目标 格式化输出 格式化符号f-字符串 print的结束符 输出 作用&#xff1a;程序输出…

【正点原子STM32连载】 第三十四章 PWM DAC实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第三…

NSS刷web(1)

一点点做,简单的也不跳了,就当回忆知识了 [SWPUCTF 2021 新生赛]gift_F12 ctrlu [SWPUCTF 2021 新生赛]jicao [SWPUCTF 2021 新生赛]easy_md5 [SWPUCTF 2021 新生赛]easy_sql [SWPUCTF 2021 新生赛]include [SWPUCTF 2021 新生赛]easyrce [SWPUCTF 2021 新生赛]caidao [SWP…

PMP证书考下来要多少费用?

PMP考试形式分为&#xff1a;笔试、机考。PMP考试这里只着重介绍笔试&#xff08;大陆地区目前都是笔试&#xff09;&#xff1a; PMP认证考试在大陆内的考试一般一年举行四次&#xff0c;分别在3、6、9、12月份。2023年考试时间是3、5、8、11月份。 考试方式是笔试。考试改版…