Linux之应用层协议HTTP(二)

HTTP 应答服务器端要做的事

1. 解析完请求,先确定三件核心信息

  1. 状态码:200 成功、404 找不到文件、400 请求格式错、500 服务器出错等
  2. 状态描述:和状态码配对
  3. 响应体(body):要发给浏览器的内容
状态码
状态码 英文描述 中文说明 场景举例
2xx 成功类
200 OK 请求成功 正常返回网页、接口数据(你的首页 index.html)
201 Created 创建成功 POST 请求成功新建资源
202 Accepted 已接受请求,尚未处理 异步任务提交,服务器收下任务还没执行
3xx 重定向类
301 Moved Permanently 永久重定向 网站域名永久更换,浏览器会缓存新地址
302 Found 临时重定向 登录跳转、临时切换页面,不缓存
304 Not Modified 资源未修改 协商缓存,浏览器本地文件可用,不用重传资源
4xx 客户端错误(请求有问题)
400 Bad Request 错误请求 请求报文格式错误、参数非法
401 Unauthorized 未认证,需要登录 没登录就访问需要权限的接口
403 Forbidden 拒绝访问,权限不足 登录了,但没有访问这个资源的权限
404 Not Found 资源不存在 访问的文件路径找不到(你现在的 err404.html 页面)
405 Method Not Allowed 请求方法不允许 接口只支持 GET,你发了 POST
408 Request Timeout 请求超时 客户端很久没发完请求,服务器断开
5xx 服务端错误(服务器内部出错)
500 Internal Server Error 服务器内部错误 代码崩溃、空指针、逻辑异常(C++ 程序异常)
501 Not Implemented 功能未实现 服务器不支持该请求方法
502 Bad Gateway 网关错误 反向代理拿到后端无效响应
503 Service Unavailable 服务不可用 服务器过载、正在维护,暂时无法提供服务
504 Gateway Timeout 网关超时 代理服务器等待后端响应超时

2. 拼装【响应报文】

代码

build

对于应答部分

在初始化的时候给出默认值

对于状态码和状态码描述要建立映射

我们要先对发过来的请求作出解析,找到他所要请求的内容.也就是uri所对应的内容,

首先就是返回/的时候我们要对应到所在的首页

找到了文件路径和文件名称可以获得唯一确定的访问内容.接下来就是对文件进行读取

接下来拿到资源要进行判断拿到的资源到底是有没有,就可以设计相应的状态码

如果访问的资源不存在也就是404,那么也就是说名我们要对其结果返回另外一个html,这里我们选择读取的文件是特定目录下的文件,显示该网页不存在,另外在设置相应的报头属性

如果存在我们就进行正常读取返回状态码200

当状态码是3xx的时候:

3xx 代表重定向 ,服务器告诉客户端:你要找的资源不在原地址了,需要换一个 URL 重新发起请求。 浏览器收到 3xx 后,默认会自动跳转到响应头 Location 里给的新地址。

所以对于3xx我们还需要在添加一个报头也就是说明其要跳转到哪一个网页

Serialization

将得到的资源内容进行拼接

补充细节

读取的网页可能并不是纯文本的,可能还有图片视频,音乐等等

所以我们还要对文件读取进行调整,变成二进制文本的读取

其他资源可以是服务器本地也可以是来自其他网站,可以解决服务器压力很大的问题,典型的就是图床

我们来讨论下一个问题我们没有给浏览器发送我们返回的类型,为什么浏览器自己可以知道???

首先就是不一定每个浏览器都会完成,各个浏览器的功能丰富度是不一样的,作为相应我们应该是要返回,那我们怎么知道呢???

相关推荐
hasty1 小时前
只监听本机为何仍需鉴权?Cline Hub 的 WebSocket 信任边界解析
网络·websocket·网络协议
小小小小钰儿2 小时前
1.5-Python网络编程
开发语言·网络·python·web安全·计算机·网络安全
vipjx12 小时前
2026最新PanDownload复活版评测:告别百度网盘限速实测可用
网络·智能路由器
hasty3 小时前
01_新网络安全法下的软件漏洞治理
网络·安全·web安全
j7~3 小时前
【Linux网络编程】四十七.《Linux IO 模型详解:阻塞 IO、非阻塞 IO 与 IO 多路转接(select)》
linux·运维·网络·select·非阻塞io·阻塞io·i/o多路连接
猫咪宝妖3 小时前
信息安全工程师 第四级 结构化保护级
网络·数据库·安全
2501_937860945 小时前
下篇:网络层、数据链路层与应用层:IP、NAT、ARP、DNS 一网打尽
网络·网络协议·tcp/ip
Yang96115 小时前
鼎讯信通LDMN-JM3雷达信号模拟器在电子对抗训练中的作用
网络
ITxiaobing20236 小时前
IP 定位服务怎么选:第三方认可、实测精度和合规边界不是一回事
网络·网络协议·tcp/ip