【计算机网络】HTTP(下)

这篇具有很好参考价值的文章主要介绍了【计算机网络】HTTP(下)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文承接上文的代码进行改造,上文链接:HTTP上

1. 实现网站跳转

在浏览器上 输入 w3school 进行搜索

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

url 表示 链接
Link text 表示 文字/按钮
就可以跳转到指定的网站


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在index.html 中,添加一行表示 百度链接,通过点击 Visit W3School 文字进入


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

运行可执行程序后,可点击Visit W3School 文字


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在index.html中 粘贴为 百度的链接,所以点击直接跳转到百度网站

实现 自己的网站跳转

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

此时将百度的网址改为 自己实现的 file1与 file2文件


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

此时输入 主机IP + 端口号 ,可以看见 图片下方 有 file1 和file2 两个 链接


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

此时输入 主机IP + 端口号 ,可以看见 图片下方 有 file1 和file2 两个 链接
分别点击 file1 和file2都可进入不同的网站

2. 请求方法(get) && 响应方法(post)

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

其中最常用的是 GET和 POST方法
一般是由浏览器 客户端发起的 ,会构建一个 http request,携带的方法可能是GET/POST
促使浏览器 使用不同的方法 进行资源提交和请求
就提出了 HTML 表单的 概念

GET方法

点击查看:HTML表单

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

语法为form标签,以/form结束
形成输入框,允许用户把自己的个人信息进行直接提取,提交给服务器

action表示 将表单提交给 /a/b/c.exe 对应方法 为 GET


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

通过GET方法,输入你的名字和密码,最终点击submit 提交


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在输入名字 和密码后,点击提交,此时跳转页面的网址为http://101.43.252.143:8989/a/b/c.exe?myname=dname&mypasswd=123456


同时Linux上显示

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议
【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

浏览器在点击提交后,会自动构建HTTP请求
以?作为分隔符,左侧为要访问的资源,右侧为想要给资源的参数,参数为KV类型

GET也能进行提交参数,通过URL的方式提交参数

POST方法

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

将方法改为POST,其他不变


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

POST请求,提交数据时,通过正文部分提交参数的


GET与POST的应用场景

GET方法提交参数 不私密(不是安全的)
会把参数回显到 浏览器的URL上

POST方法提交参数比较私密一些
不会把参数回显到URL上
所以所有的登录 注册等行为,都要使用POST方法提参 (不是安全的)

url: http请求行的字符串,一般都会有大小的约束
正文 理论上可以非常大
建议 大数据使用POST,小数据 使用GET

3. HTTP状态码

为了告诉浏览器,返回的结果正确还是错误

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在之前的代码中,直接告诉浏览器,它的状态码是200,即正确的


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在HTTP服务器中,状态码分为五类,分别为1开头、2开头、3开头。4开头、5开头

1开头称为 信息性状态码
如:当前做了一个提交动作,但该动作比较耗费时间,为了尽快给客户端一点响应,返回一个1开头的状态码
表示当前请求已经被受理了,正在尽快处理

2开头称为 成功状态码
常用的如 200,表示这次请求是成功的,意味着给你的响应 可以正常去解释

3开头称为重定向状态码
如:301、302、307
重定向分为 永久性重定向 与 临时性重定向


4开头称为客户端错误状态码
如:404 403

如:在京东中 点击查看:京东官网

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

寻找 www.jd/a/b/c.html ,由于京东中并不存在这个页面,所以会报错
所以404报错,属于客户端报错,表示客户端属于非法请求
若客户端属于非法请求,服务器要告诉客户端,该请求是不合理的


在自己设计的代码中发现404

在自己设计的代码中,若访问的资源在网站中没有找到,则如何进行404
所以在wwwroot目录中, 创建一个文件 err_404.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
<p>Sorry, the page you are looking for could not be found.</p>
</body>
</html>

在网上寻找到一个404 html网页源代码


在Main.cc的HandlerHttp回调函数中

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

若 ReadFile函数(功能为读取整个文件的内容)返回值 为 true,则表示读取文件成功


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

若ReadFile函数返回值为false,则表示读取文件失败,需添加404页面


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

创建一个 字符串 page_404,表示404页面的路径
文件打开失败,则将 404对应的路径 导入到 body(有效载荷) 中

在GetContentType函数(功能为判断某一种资源的后缀),直接判断为.html


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

当在可执行程序中输入 端口号8888时,就意味着浏览器只能输入 主机IP+端口号
当浏览器 输入 主机IP+端口号 后,又输入其他东西,则会导致 404 报错


5开头称为 服务器错误状态码

在服务器中创建进程或线程时,若创建进程或线程 处理失败了,则属于服务器错误
或者 在执行操作时,这个文件是存在的,但是打开/读取文件失败了,也属于服务器错误

一般来说,即便是服务器错误,也不会显示5开头的状态码,而会显示 1到4开头的状态码

3开头的状态码(重定向状态码)

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

主要看 301 302 307 三种 状态码
301表示 永久重定向
302与307 表示 临时重定向


永久重定向 和 临时重定向 的区别

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

服务器因为某些原因,如:将厂商从阿里云 变成 腾讯云
但是用户并不知道,用户可能还是向 老服务器进行请求
此时当前的主机并不会给客户端提供服务,而是告诉客户端 需要访问新的地址
所以客户端就会发起 第二次请求,去访问 新服务器
这种行为就叫做 重定向


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

如:在你们学校的东门,有一家XXX麻辣烫, 你和你的朋友在宿舍中,
在你们学校的东门,门口有一条路,这条路正在修路,但依旧可以走过去,所以你和你的朋友前往麻辣烫店吃了一次


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

又过了几个月,你俩又想吃麻辣烫
但此时麻辣烫门口贴了一张纸,因为门口修路,导致本店就餐环境不太好,所以本店迁移到西门
因为你俩非常想麻辣烫,所以就去了西门

这种行为就被称为 重定向


因为 XXX麻辣烫 是临时搬迁,所以并不了解什么时候搬回到东门,导致每次吃麻辣烫都要去东门看看,如果没在,再去西门吃麻辣烫
这种行为 称为 临时重定向
(每次都会去老地址,再由老地址跳转到新地址)
临时重定向不更改 浏览器的任何地址信息


后来麻辣烫店的老板发现西门的生意 比东门好,因为西门离学校宿舍最近,所以老板想把所有的老客户都拉拢到西门新店中
所以又重新在东门麻辣烫店粘贴一张告示
因为门口修路 本店就餐环境不好,以后想吃麻辣烫可以直接去西门,该店面就不经营了

此时你和你的朋友 依旧照常来到东门吃麻辣烫,但是发现告示后,还要去到西门
过了一段时间,你和你的朋友就直接去西门吃麻辣烫了
(重定向一次后,下次就会去新的地方了)

这种行为称为 永久重定向
永久重定向 会更改浏览器的本地书签


可以发现无论是 临时重定向(302) 还是 永久重定向(301),都会在东门麻辣烫店处留下一个新地址,
由客户端返回 301 302 307 这样的状态码 再加上 Location , Location后面可以跟上一个新店地址

Location:搭配3xx状态码 使用,告诉客户端接下来要去哪里访问

临时重定向的实操

在Main.cc的HandlerHttp回调函数中
只要用户发送请求,直接做重定向

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

定义一个字符串response,把302(临时重定向)添加到其中
并重定向到 https://www.qq.com/


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

输入主机IP+端口号,就会直接跳转到qq官网中


永久重定向的实操

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

定义一个字符串response,把301(永久重定向)添加到其中
并重定向到 https://www.baidu.com/


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

输入主机IP+端口号,就会直接跳转到百度官网中

之后就算是把该代码注释掉, 运行可执行程序 , 输入主机IP+8888,依旧还是百度官网

4. 关于Http的会话保持功能

http 本身是无状态的
如:访问了file1,过了一段时间,还想访问file1,http并不知道前段时间访问过file1,还会进行请求

在打开B站,并将用户登录后,发现 再次打开B站,用户已经处于登录状态了
所以就需要 cookie 与 session
Cookie:用于在客户端存储少量信息,通常用于实现会话(session)的功能


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

在登录时,服务器会向本地浏览器通过一些Http的选项,向本地写入一些cookie信息
所以当重新进入B站时,用户已经登录了


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

若将B站对应的cookie删除,则再次进入B站,就需要重新登录了

cookie的使用

【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

服务器中有很多资源
当请求某种资源时,若服务器发现没有登录,就会要求客户端进行登录
在输入完账号密码后,服务器就会对账号密码进行认证
若认证通过了,就会返回认证成功的消息


服务器通过 Set-Cookie 把私人信息(用户名 密码等) 携带到 Http响应中
当浏览器收到携带 cookie的信息时,将response中响应的cookie信息在本地进行保存
浏览器对于本地 有两种保存方案:内存级、文件级

之后只要访问同样的网站时,请求中就会携带cookie信息(浏览器自动做的)
自动进行身份认证,就不需要用户输入 账号密码了


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

当你点了 一些由黑客发出的不该点的链接,就会导致 黑客把 所有的cookie信息盗取过来
若黑客 也去访问你曾经访问的网站, 该网站上的登录用户依旧是你

session id 的提出

上一个方案是有明显的缺点的,黑客可以获取到对应的账号密码等信息
所以使用当前方案


【计算机网络】HTTP(下),计算机网络,计算机网络,http,网络协议

当前服务器中存在很多资源
当请求某种资源时,若服务器发现没有登录,就会要求客户端进行登录

当登录时 需要使用 POST方法 ,输入账号密码
在输入完账号密码后,服务器就会对账号密码进行认证
若认证通过后,新方案就会在服务器形成一个session对象 (用当前用户的基本信息 填充)
以及 seesion id (以10/16进制形成的序列 保证是唯一的)
把session id 通过http 响应 传给 客户端


之后访问时,Http 请求 都会携带 session id,就可以通过session id 去确认是否存在,若存在则可以访问这个资源

就算是黑客再次盗取你的信息,也只会盗取session id ,虽然还是会存在使用你的身份去访问资源
但是不用担心 用户的账号密码泄露了
文章来源地址https://www.toymoban.com/news/detail-701674.html

到了这里,关于【计算机网络】HTTP(下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络】应用层协议 -- HTTP协议

    协议。网络协议的简称,网络协议是通信计算机双方必须共同遵守的一组约定,比如怎么建立连接,怎么互相识别等。 为了使数据在网络上能够从源头到达目的,网络通信的参与方必须遵守相同的规则,我们称这套相同的规则为协议(protocol),而协议最终都需要通过计算机

    2024年02月15日
    浏览(30)
  • 计算机网络 - http协议 与 https协议(2)

    本篇介绍了构造http请求的的五种方式,简单的使用postman构造http请求,进一步了解https, 学习https的加密过程,了解对称密钥与非对称密钥对于加密是如何进行的,如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 1) 直接在浏览器中的地址栏中输入一个 u

    2024年02月13日
    浏览(41)
  • 【计算机网络】HTTP协议以及简单的HTTP服务器实现

    虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输议)就是其中之一。 平时我们俗称的 “网址” 其实就是说的 URL 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了.

    2024年01月20日
    浏览(40)
  • 计算机网络 - 应用层http协议 - http报文格式介绍(1)

    本篇认识和理解应用层中的http协议,了解抓包工具并进行使用,认识请求报文与响应报文,了解报文中基本键值对意思例如:Set-Cookie, 状态码等,如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 ① 根据输入的url,在域名系统DNS中进行解析获取对应的服务

    2024年02月12日
    浏览(30)
  • Linux 计算机网络 深入理解HTTP协议

    HTTP是超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。下面就来介绍HTTP的组成与特性。 HTTP是 ⽆连接 , ⽆状态 , ⼯作在应⽤层 的协议。 ⽆连接: http协议本身是没有维护连接信息的, http的数据会交给⽹络协议栈传输层的TCP协议, ⽽TCP是⾯向

    2024年02月14日
    浏览(29)
  • 计算机网络的故事——简单的HTTP协议

    ` HTTP是不保存状态的协议,为了实现保存状态功能于是引入了Cookie技术。 method: get:获取资源 post:传输实体主体 put:传输文件 head:获取报文首部,用于确认URI的有效性以及资源的更新日期时间等 delete:删除文件 put和delete不带验证机制,所以一般也不会使用delete方法,options:询问

    2024年02月09日
    浏览(29)
  • 计算机网络学习day02|HTTP协议

    目录 一、HTTP报文格式长什么样?是如何分割的? 请求行 状态行 头部字段 常用头字段 小结 二、HTTP提供了哪些方法?GET和POST的区别是什么? 1.HTTP有哪些方法 2.GET/HEAD 3.PSOT/PUT 小结 三、URI和URL URI 的格式 URI 的基本组成 URI 的查询参数 小结 四、HTTP有哪些状态码?分别代表什

    2024年04月23日
    浏览(36)
  • 【计算机网络】应用层——HTTP 协议(一)

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 HTTP协议全称超文本传输协议,通过浏览器和服务器进行数据交互,进行

    2024年01月23日
    浏览(33)
  • 计算机网络实验4:HTTP、DNS协议分析

    实验内容 :使用Wireshark捕获数据包,根据捕获的相关数据包分别对HTTP、DNS协议展开分析。 额外内容 :利用fiddler软件对HTTPS协议进行分析。 所需学时 :1。 重难点 :HTTP和DNS协议的报文结构。 周次 :第3周。 教材相关章节 :2.4、2.7。 HTTP(超文本传输协议)是一个基于 请求与

    2024年02月13日
    浏览(36)
  • 【计算机网络】| Http.*协议该知道的那些事儿 | 面经

    本文章参考了很多文档文献整理成狮子自己喜欢的风格类型文字,主要有: 《图解网络-小林coding》、Github上面的《前端语音社群》,ChatGpt 3.5 大家有兴趣可以去找来看看,一起上岸!!! 主要抓住三方面: 超文本 传输 协议 HTTP 协议是⼀个 双向协议 (两点之间) eg: 浏览

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包