当前位置: 首页 > news >正文

【网络】HTTP协议(下)

目录

Content-Type

套接字地址复用

请求字段解释

http的状态码

请求方法

code


上篇博客讲了http请求和响应的基本格式,那么其中请求是浏览器发给我们服务器的,也就是说,里面的字段都是浏览器填充的;而我们需要做的是分析请求内容,然后把目标文件发给客户端。

Content-Type

那么其中在发回的响应内容中就有这么一个字段:响应报头,那么下面我们就来介绍一下响应报头中的Content-Type字段(这个字段就是告诉浏览器服务器发回的文件是什么类型的),里面要填充什么http协议已经规定好了,这个字段就是填充固定的一些内容,而这些内容是和文件后缀相关联的,其中我们可以参考比如下面的网站

Content-Type对照表

于是,我们可以把它们之间的对应关系用哈希表存起来,以方便后面的填充工作

套接字地址复用

我们可能会经常发现一个问题,如果我们将一个启动的http服务关掉后再用之前的端口号启动服务,这有时会出现bind error,这是因为有的客户端还没有来得及退出,服务关掉之后OS正在做一些收尾工作,此时端口号仍然被占用

我们要解决这个问题就是设置套接字地址复用

我们直接在封装套接字文件中加入这个接口的使用即可,其中这个接口一般是创建套接字成功,绑定之前用

请求字段解释

像这里面的host就是客户端告知服务器,所请求的资源是在那个主机的哪个端口上

user-agent就是声明用户的操作系统和浏览器版本信息

referer就是当前页面是从那个页面跳转过来的

http的状态码

响应字段的状态行有状态码,我们下面来解释一下各个状态码的含义

首先可以大体分为这么五类:

类别原因短语
1xxinformational(信息性状态码)

接收的请求正在处理

2xxsuccess(成功状态码)请求正常处理完毕
3xxredirection(重定向状态码)需要进行附加操作以完成请求
4xxclient error(客户端错误状态码)服务器无法处理请求
5xxserver error(服务器错误状态码)服务器处理请求出错
下面是一些具体的状态码的具体含义
状态码含义应用样例
100continue上传大文件时服务器告诉客户端可以继续上传
200ok服务器处理成功请求
301moved permanently网站换域名后,自动跳转到新域名;搜索引擎更新网站链接时使用
302found或see other用户登录成功后,重定向到用户首页
304not modified浏览器缓存机制,对未修改的资源返回304状态码
404not found浏览器请求的资源不存在
500internal server error内部服务器出错

我们一般用重定向的话就是用302,我们只需要在响应内容中设置状态码为302,并且响应报头中添加"Location"字段即可。这就是告诉浏览器,你要重定向到Location中的地址去

这个就是实现浏览器访问我们的服务后自动跳转到qq.com

服务器遇到不认识的文件就应该返回404界面,不认识体现在代码中就是读取不到文件

请求方法

我们可以看到请求报文中第一行有个GET,这其实就是请求方法,除此之外,用的比较多的还有POST

GET一般是获取资源,POST是通过前端界面向服务器提交一些信息,当然GET也可以提交信息,只不过他们提交信息的方式有差别:GET提交的内容体现在uri中,而POST提交的内容体现在正文中,所以POST可以传更多的数据

并且这里的请求方法跟前端表单中的method是相互对应的,比如下面表单中的method是get

意味着点击提交按钮之后,里面的数据就会以get为请求方法向index.html中发起请求

我们能看到用户输入的内容就是以uri的形式存在,所以在我们处理uri的时候,还要判断目录后面是否加上了实际的内容信息,我们还需要提取出来

如果请求方法是post就不用请求了,因为用户输入的内容就在请求正文中

遇到用户输入的数据,我们一般需要的不是发回一个网页,而是运行一个功能对数据做利用

所以,浏览器不仅可以请求一个前端页面,还可以请求一个功能

code

http.dir/Http.hpp · 巨新豪/linuxcode - 码云 - 开源中国


http://www.mrgr.cn/news/57209.html

相关文章:

  • Vue01
  • 基于单片机的 OLED 显示终端设计分析与研究
  • Matplotlib学习Day19
  • 图像梯度-Sobel算子、scharrx算子和lapkacian算子
  • 腾讯云:数智教育专场-学习笔记
  • 使用IIS搭建PHP环境时遇到404错误怎么办?
  • 深信服超融合HCI6.8.0R2滚动热升级至HCI6.9.1
  • 京东 北京 java 中级: 哪些情况下的对象会被垃圾回收机制处理掉? 哪些对象可以被看做是 GC Roots 呢?对象不可达,一定会被垃圾收集器回收么?
  • 列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
  • JavaScript(操作元素属性:样式style,className,classList,表单元素,自定义属性,间歇函数)注册用户协议同意倒计时
  • 【C++篇】探索STL之美:熟悉使用String类
  • 【AIGC】AI时代降临,AI文案写作、AI绘画、AI数据处理
  • 时空智友企业流程化管控系统uploadStudioFile接口存在任意文件上传漏洞
  • static、 静态导入、成员变量的初始化、单例模式、final 常量(Content)
  • 【Python系列】poetry安装依赖
  • 并行计算的未来:大型模型的训练与优化
  • H5的Canvas绘图——使用fabricjs绘制一个可多选的随机9宫格
  • class 9: vue.js 3 组件化基础(2)父子组件间通信
  • vscode使用socks5代理ssh-remote
  • 李沐_动手学深度学习_模型选择
  • 算法学习5
  • 【Linux】磁盘文件系统(inode)、软硬链接
  • js面试问题笔记(一)
  • HTTPS讲解
  • 基于Springboot的在线考试与学习交流平台的设计与实现
  • Token的组成部分