【剧前爆米花--web】HTTP协议格式详解以及构造

这篇具有很好参考价值的文章主要介绍了【剧前爆米花--web】HTTP协议格式详解以及构造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:困了电视剧

专栏:《JavaEE初阶》

文章分布:这是一篇关于HTTP协议的文章,在这篇文章中我会说明HTTP协议格式以及相关的构造,希望对你有所帮助!

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

 

目录

HTTP协议

HTTP协议格式 

HTTP请求

HTTP响应详情

HTTP请求的构造

通过form表单构造HTTP请求

通过ajax构造HTTP请求


HTTP协议

HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

 

应用层协议,经常是需要进行“自定义协议”的。但是很多时候也不一定非得是从零开始设定,也可以基于一些大佬们设计好的协议,在这个基础上进行定制。

HTTP协议之所以应用非常广,主要原因就是HTTP可定制性非常强。     

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

 HTTP是一个“一问一答”这种形式的协议,通常是一个请求对应一个响应。

 注:HTTP是一个应用层协议,HTTP请求发送出去之后,就需要从应用层到物理层进行层层封装,接收方收到之后,再从物理层到应用层层层分用,最终才能完成传输。

HTTP协议格式 

HTTP 是一个文本格式的协议. 可以通过 Chrome 开发者工具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节,这里我们用fiddler来进行举例。

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

这就是打开百度所发送的HTTP请求。

一个HTTP请求数据由4个部分组成。

首行:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

header:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

空行:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

空行是header结束的标记 

正文(body)

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

正文是空行后面的内容,有的时候可以没有。

=========================================================================

接着我们再来看一下这个请求所对应的响应。

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

首行:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

响应报头(header)

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

空行

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

正文(此处的正文是一个html代码)

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

HTTP响应,就是这个要显示的html的本体,浏览器拿到这个http响应也就拿到了里面的html,然后就可以显示了。

更直接的可以参考这张图:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

HTTP请求

首行:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

这里的GET是一个HTTP方法,描述了这个HTTP请求想干什么,HTTP协议有很多种方法,不同的方法表示不同的“语义”。

GET的语义是“从服务器这里拿个东西”。

POST的语义是“往服务器提交个东西”。

除此之外,还有很多HTTP方法,比如:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

但是在日常的使用当中,GET和POST方法运用的最多,其他的方法很少用。

注:

GET和POST表示的是不同的语义,但是实际上并非严格遵守。

对于body有没有的问题也不是绝对的,GET也可能有body,POST也可能没有body。

GET和POST这两个方法没有本质区别,在大多数场景下,他们可以相互替换,他们的最大区别是在使用习惯上:

1.GET在习惯上用来表示“获取一个数据”,POST用来表示“提交一个数据”。

2.GET一般没有body,需要携带数据放到URL中,POST一般有body。

3.GET请求通常会设计成幂等的,POST则无要求(即如果输入一定,得到的输出也一定)

4.GET可缓存的(前提是幂等),POST则不能。

5.GET请求可以被浏览器收藏,POST不能。

URL:唯一资源定位符,描述了网络上的唯一的一个资源。

这个概念严格的说,并非是HTTP里的概念,很多协议都会用到URL,就比如数据库,只是当时用的协议不是HTTP而是jdbc。

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

注:服务器端口号可以省略,省略不是没有,而是浏览器会自动加上默认的端口号,对于http来说,默认的端口号是80,对于https来说,默认的端口号是443. 

header:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

Content-Type:描述了body的数据格式。

Content-Length:描述了body的长度(字节)

Referer:描述了当前这个页面是从哪个页面跳转过来的(如果直接在地址栏输入url,则此时 请求中没有referer)

Cookie:Cookie的值,也是键值对,Cookie的本质,是浏览器在本地存储用户自定义数据的一种关键机制。

Cookie详解:浏览器本身也是需要存储一些数据的,比如最典型的用户身份信息。这些数据存储在哪地方,能存储在硬盘中吗?

不行,如果存储到硬盘上,则意味着网页有权限操作电脑的文件系统,那么,如果遇到一些恶意的网站,就会很容易将你的个人信息盗走,所以为了保证用户上网比较安全,浏览器会做出限制,禁止网页能够直接访问硬盘。

所以这些数据会通过浏览器提供的api写入特定的文件中。

HTTP响应详情

HTTP响应,首行:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

首先版本号和请求相同,其次后面要跟一个状态码,HTTP中提供的状态码非常繁多,毕竟HTTP中可能遇到的情况太复杂了,如图:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

但是我们常用的状态码就几个:

200 OK:表示的是请求成功。

404 Not Found:表示要访问的资源不存在。

403 Forbidden:表示访问被拒绝(没有权限)。

500 Internal Server Errior:服务器内部错误。比如:抛了异常没有catch到就会500。

504 Gateway Timeout:服务器访问超时。浏览器给服务器发送请求后,服务器迟迟没有响应。

302 Move temporarily 临时重定向(下次是否继续重定向?不确定)

301 Moved Permanently 永久重定向

(重定向:访问旧的网址会被自动引导到新的网址上)

状态码可以大致分为几个大类:

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

HTTP请求的构造

1.直接通过浏览器地址栏,输入一个url,可以构造出一个GET请求。

2.html中,一些特殊标签,也会触发GET请求,比如:link,script,img,a

常用且复杂一点的使用form和ajax构造请求

通过form表单构造HTTP请求

 这是用form发送请求

<form action="https://www.baidu.com/?tn=15007414_13_dg" method="get">
    <input type="text" name="aaa">
    <input type="text" name="bbb">
    <input type="submit" value="提交">
</form>

这是用form发送响应: 

<form action="https://www.baidu.com/?tn=15007414_13_dg" method="post">
    <input type="text" name="aaa">
    <input type="text" name="bbb">
    <input type="submit" value="提交">
</form>

他的Content-Type是 application/x-www-form-urlencoded。

通过ajax构造HTTP请求

ajax是现在最主流的前后端交互方式之一。

【剧前爆米花--web】HTTP协议格式详解以及构造,JavaEE初阶,前端,http,网络协议

其中这个success:function(body)部分是回调函数,即会在服务器返回一个正确的响应的时候,被浏览器自动执行,这个执行过程就是“异步”的。

这里的异步就是,当我们把请求发出去后就不管了,就继续执行后续的代码,直到响应回来了之后,浏览器就会把这个响应喂给咱们的代码,即执行success中的逻辑。

以上就是本篇博客的全部内容,如有疏漏欢迎指正!文章来源地址https://www.toymoban.com/news/detail-594776.html

到了这里,关于【剧前爆米花--web】HTTP协议格式详解以及构造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • HTTP协议基本格式

    HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox) 在目标网页打开开发者工具: 点击网络(Network): 此时就可以看到目标网页的所有请求。 查看请求和响应: 浏览器自带抓包工具功能有限,

    2024年02月08日
    浏览(35)
  • 2.5 - 网络协议 - HTTP协议工作原理,报文格式,抓包实战

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 HTTP(Hypertext Transfer Protocol)是 「超文本传输协议」 ,基于B/S架构(Browser

    2024年02月05日
    浏览(46)
  • HTTP 协议的基本格式和 fiddler 的用法

    目录 一.  HTTP 协议 1. HTTP协议是什么 2. HTTP协议的基本格式  HTTP请求 首行                  GET和POST方法:                 其他方法                  经典面试题:                 URL Header(请求报头)部分 空行  ​HTTP响应          状态

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

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

    2024年02月12日
    浏览(54)
  • Web协议:HTTP协议

    HTTP(Hyper Text Transfer Protocol),超文本传输协议是一个简单的请求-响应协议,通常运行在TCP之上。它是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。它工作在C/S架构上,浏览器

    2024年02月02日
    浏览(30)
  • 2.3 Web应用 -- 3. HTTP 消息格式

    HTTP协议有两类消息 请求消息(request) 响应消息(response) 请求消息 ASCII:人直接可读 HTTP请求消息的通用格式 上传输入的方法 POST方法 网页经常需要填写表格(form) 在请求消息的消息体(entity body)中上传客户端的输入 URL方法 使用GET方法 输入信息通过request行的URL字段上传 方法的类

    2024年02月13日
    浏览(29)
  • 【web基础与HTTP协议】

    1.1、域名的概述 1、域名的概念: IP地址不易记忆 2、早期使用Hosts文件解析域名: ·主机名称重复 ·主机维护困难 3、DNS(Domain Name System 域名系统): ·分布式 ·层次性 1.2、域名空间结构 ·根域 ·顶级域 — 组织域 — 国家/地区域名 ·二级域 ·FQDN=主机名.DNS后缀 DNS 解析过程 客户端

    2024年02月07日
    浏览(40)
  • web基础与HTTP协议

    1.1 DNS作用 正向解析 根据域名查找对应的IP地址; 反向解析 根据IP地址查找对应的域名 1.2 域名空间结构 ① 根域 位于域名空间最顶层,一般用一个 “.” 表示 基础单位,除了根域 其他都只有一个上级域,有0或多个子域,同层域不可重复的子域或域名 ② 顶级域 一般代表一

    2024年02月06日
    浏览(36)
  • Web基础①HTTP协议

    HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。 1.HTTP协议版本 (1)HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头

    2024年02月21日
    浏览(34)
  • Web基本与HTTP协议

    目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (2)标题标签类型 三:HTML 1.HTML 概述 2.HTML 基本标签 (1)HTML 语法规则 (2)HTML 文件结构 (3)网页

    2024年02月06日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包