网络原理 - 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

<!DOCTYPE html><html lang="cn"><head><meta name="viewport" content="width=device

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

<html>

<head><title>404 Not Found</title></head>

<body bgcolor="white">

<center><h1>404 Not Found</h1></center>

<hr><center>nginx</center>

</body>

</html>

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

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>您的访问受限 (403)</title>

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

1 2

比特就业课

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

<html><body>You are being <a href="https://gitee.com/HGtz2222">redirected</a>

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

301 Moved Permanently

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

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

状态码小结

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

相关推荐
黑客Ela2 小时前
TCP(传输控制协议)和UDP(用户数据报协议)
网络·安全·web安全
我来变强了2 小时前
EndpointConfig端点配置类使用
java·websocket·网络协议
Learning改变世界2 小时前
DNS服务器Mac地址绑定与ip网路管理命令(Ubuntu24.04)
linux·服务器·网络
清酒伴风(面试准备中......)3 小时前
计算机网络WebSocket——针对实习面试
websocket·网络协议·计算机网络·面试·实习
CodeAaron4 小时前
华为Mate 70临近上市:代理IP与抢购攻略
网络协议·tcp/ip·华为
IPdodo全球网络4 小时前
搭建高效稳定的ChatGPT网络环境:从网络专线到IP地址管理的全流程解析
网络·tcp/ip·chatgpt
尘佑不尘4 小时前
http协议详解,get,post,put,delete,head,options,trace消息头详解
网络·笔记·网络协议·web安全·http
java_heartLake4 小时前
网络协议之TCP
网络·网络协议·tcp/ip
დ旧言~4 小时前
【网络】网络层——IP协议
服务器·网络·网络协议·tcp/ip·php·apache