首页 > 其他分享 >HTTP协议

HTTP协议

时间:2022-08-23 08:57:31浏览次数:193  
标签:协议 HTTP 请求 GET URL 响应 服务器

二、HTTP协议

1. HTTP协议概述

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。

2. HTTP版本

HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
(1)HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
(2)HTTP/1.0:这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
(3)HTTP/1.1:当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

3. HTTP方法

(1)HTTP方法的概念

HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST。

(2)HTTP方法描述

HTTP方法 描述
GET 请求获取 Request-URI 所标识的资源
PUT 请求服务器存储一个资源,并用 Request-URI 作为其标识
DELETE 请求服务器删除 Request-URI 所标识的资源
POST 在 Request-URI 所标识的资源后附加新的数据
HEAD 请求获取由 Request-URI 所标识的资源的响应消息报头

(3)GET和POST比较

比较项 GET POST
对数据长度的限制 URL 的长度是受限制的(URL 的最大长度是 2048 个字符) 无限制
缓存 能被缓存 不能缓存
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 Web 服务器日志中
历史记录 参数保留在浏览器历史中 参数不会保存在浏览器历史中
后退按钮/刷新 无害 数据会被重新提交,浏览器应该告知用户数据会被重新提交
书签 可收藏为书签 不可收藏为书签
注:GET 方法采用的是 URL 后缀的形式,比如 http://www.test.com/a.php?Id=123 就是一个 GET 请求,服务器接收后可以解析出 Id=123。而POST方法不需要在URL中显示”?Id=123”,参数作为内容进行了隐藏的提交。因此,表单类或者有用户名、密码等内容提交时建议使用 POST 方法。
GET 方法在 URL 上显示参数,而URL是有长度限制,故不适合提交过大的数据。GET方法可以被浏览器缓存,当请求已经被请求过一次的 URL 时,浏览器不需要向服务器再次发出请求,直接在本地缓存中获得页面。

4. HTTP状态码

(1)HTTP状态码的作用

HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态。

(2)状态码的定义范围及分类

状态码首位 已定义范围 分类
1XX 100-101 信息提示
2XX 200-206 成功
3XX 300-305 重定向
4XX 400-415 客户端错误
5XX 500-505 服务端错误

(3)HTTP常见状态码

状态码 功能描述
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求URI头部过长
500 服务器内部错误
502 无效网关
503 当前服务不可用
504 网关请求超时

5. HTTP请求流程

img
用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。

(1)请求报文

报文段 说明
请求行 请求行由请求方法、URL 以及协议版本三部分组成。
请求头 请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
空行 请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
请求体 请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。

(2)常用的请求头

请求头 描述
Host 接受请求的服务器地址,可以是 IP:端口号,也可以是域名
User-Agent 发送请求的应用程序名称
Connection 指定与连接相关的属性,如 Connection:Keep-Alive
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式
Accept-Language 通知服务端可以发送的语言

(3)响应报文

报文段 说明
状态行 状态行由协议版本,状态码,状态码描述三部分组成。
响应头 响应头与请求头部类似,为响应报文添加了一些附加信息。
空行 响应头部的最后会有一个空行,表示响应头部结束。
响应体 服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。

(4)常用的响应头

响应头 描述
Server 服务器应用程序软件的名称和版本
Content-Type 响应正文的类型(是图片还是二进制字符串)
Content-Length 响应正文长度
Content-Charset 响应正文使用的编码
Content-Encoding 响应正文使用的数据压缩格式
Content-Language 响应正文使用的语言

标签:协议,HTTP,请求,GET,URL,响应,服务器
From: https://www.cnblogs.com/970618z/p/16614896.html

相关文章

  • 协议 - tcp和udp的区别
    协议-tcp和udp的区别TCP/IP协议:是一个协议簇。里面包括很多协议的,UDP只是其中的一个,之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,就用他两命名了。TC......
  • 面试题:如何保证HTTP接口的安全性
    首先应该考虑使用https协议,因为http协议是不安全的,一般来说购买服务器的时候厂商都会送免费的https的ssl证书,只需要在nginx配置就可以了。接口应该开启加密,分为对称加密......
  • CC协议的诞生背景
    CC协议的诞生背景在当今世界绝大部分国家的法律法规中,作品的版权一般都保留于创造者或拥有人手中,在没有特殊声明的情况下,任何人想要获取或使用该作品,都要事先取得版权所有......
  • 关于EasyCVR平台Ehome协议接入设备出现停止启用现象的原因分析
    EasyCVR平台支持多类型设备、多协议方式接入,包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议,如海康SDK、大华SDK、海康Ehome等。平台可将接入......
  • 关于使用Git不能拉取GitLab https项目地址的问题
    现在使用Git命令直接clonehttps://xxx项目时候会报错“没有权限拉取代码”,其实我们需要在“UserSettings ---》AccessTokens“界面新增一个 accesstoken就好了,......
  • 关于开源软件协议的选择
    早期:GPLGPLv2GPLv3中期:ApacheMPLAGPLLGPL最近BSLSSPLElastic以及特殊的附加条款CommonClauseOSICertified:OSI认证,开源标准的守护者,社区约束并非法......
  • https ssl
    Java爬虫(八)--httpClient进阶:HTTPS和证书认证(原理总结篇)《==》 字节一面:HTTPS一定安全可靠吗?  根据这两篇文章总结:客户端拿到服务端的CA证书之后,产生对称密钥的......
  • 14.PHP伪协议利用
    一.伪协议介绍PHP支持以下几种协议:file://-访问本地文件系统http://-访问HTTP(s)网址ftp://-访问各个输入/输出流(I/Ostreams)zlib://-压缩流data://-数......
  • TCP-IP详解 卷一:协议 pdf
    高清文字版 下载链接:https://pan.baidu.com/s/15RvvtVL6vRVZGBsAdjrveg点击这里获取提取码。  ......
  • Apache HttpClient 5 使用详细教程
    点赞再看,动力无限。微信搜「程序猿阿朗」。本文Github.com/niumoo/JavaNotes和未读代码博客已经收录,有很多知识点和系列文章。超文本传输协议(HTTP)可能是当今......