HTTP协议(二)---请求和响应
HTTP通过请求和响应的交换达成通信。
HTTP请求
请求报文由请求行(请求方法、请求URI、协议版本)、请求首部字段以及内容实体(可能没有)构成。
下面是一个GET请求,没有内容实体:
下面是 一个POST请求
请求方法
GET:获取资源
GET方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。
POST:传输实体主体
PUT:传输文件
PUT方法用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。但是,由于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的web网站不使用该方法。
HEAD:获取报文首部
HEAD方法和PUT一样,只是不返回报文主体。用于确认URI的有效性及资源更新的日期时间等。
DELETE:删除文件
DELETE按请求URI删除指定资源。但是,HTTP/1.1的DELETE方法不带验证机制,因此一般的web网站也不使用DELETE方法。
OPTIONS:询问支持的方法
用于查询针对请求URI指定的资源支持的方法。
TRACE:追踪路径
TRACE方法是让web服务器将之前的请求通信返回给客户端的方法。客户端通过TRACE方法可以查询发送出去的请求方法是怎么被加工修改的。
CONNECT:要求用隧道协议连接代理
CONNECT要求与代理服务器通讯时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通讯内容加密后经网络隧道传输。
请求URI
URL(Uniform Resource Locator ,统一资源定位符):是使用web浏览器等访问web页面时需要输入的网页地址。
URI(Uniform Resource Identifier,统一资源标识符):用字符串标识某一互联网资源。而URL表示资源的地点,URL是URI的子集。
协议版本
现在多用HTTP/1.1
响应报文
响应报文由响应行(协议版本、状态码、原因短语)、响应首部字段以及实体主体(可能没有)构成。
状态码
1XX 信息性
2XX 成功
- 200 OK:表示客户端发来的请求在服务器端被正常处理了
- 204 No Content:表示服务器接收的请求已正常处理,但在返回的响应报文中不包含实体的主体内容。另外,也不允许返回任何实体的主体。一般在只需要客户端往服务器端发送信息,而客户端不需要发送新信息内容的情况下使用。
- 206 Partial Content:表示客户端发送了范围请求,而服务器端成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。
3XX 重定向
- 301 Moved Permanently:永久重定向。像请求的URI的忘记添加"/",就会产生301状态码。
- 302 Found:临时性重定向。
- 303 See Other:表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求资源
- 304 Not Modified:表示客户端发送带条件的请求时,服务端允许访问资源,但条件未满足;返回的响应不包含主体部分。带条件的请求是指采用GET方法的请求报文中包含If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Since、If-Range中的任一首部。
- 307 Temporary Redirect:临时重定向。与302的差异:307不会从POST改成GET;302虽然也禁止,但是实际使用并不遵守,307会遵守。
4XX 客户端错误
- 400 Bad Request:表示请求报文中存在语法错误。浏览器会像 200 OK一样对待该状态码。
- 402 Unanthorized:发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息;若之前进行过一次请求,则表示认证失败。响应必须包含一个适用于请求资源的WWW-Authenticate首部用以exchange用户信息。浏览器初次接收到401的响应,会弹出认证用的对话窗口
- 403 Forbidden:表示请求访问资源被服务器拒绝了。因为未获得文件系统的访问授权等。
- 404 Not Found:服务器上无法找到请求的资源。或服务器拒绝请求且不想说明理由也可以使用。
5XX 服务器端错误
- 501 Internet Server Error:服务器端在执行请求时发生了错误。
- 503 Service Unavailable:服务器暂时处于超负载或停机维护,无法处理请求 。
其他状态码可查看RFC2616、RFC4918、RFC5842、RFC6585等
HTTP协议(二)---请求和响应的更多相关文章
- 02_Django-路由配置-HTTP协议的请求和响应
02_Django-路由配置-HTTP协议的请求和响应 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn.net/ ...
- 老李分享:HTTP协议之请求和响应
老李分享:HTTP协议之请求和响应 HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.fo ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- HTTP协议的请求和响应学习
本篇作为学习servlet的前提,http协议是学习JavaWeb开发的基石,不深入了解http协议,就不能说掌握了JavaWeb开发. HTTP协议有两个版本:HTTP1.0和HTTP1.1,那么有 ...
- 【HTTP】HTTP协议的请求与响应
创建时间:6.14 http协议 的位置 1.HTTP是什么 超文本传输协议(HyperText Transfer Protocol) 2.Http协议的组成 Http协议由Http请求和Http响应 ...
- #WEB安全基础 : HTTP协议 | 0x10 请求和响应报文重点结构及常见头部
你需要认识一些常见的头部以及了解报文的详细结构 请求报文的请求行 GET/HTTP/1.1 响应报文的响应行 HTTP/1.1 200 OK 想必这些大家都知道了 请求 我访问一个页面 Host // ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- http协议(二)请求和响应报文的构成
http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...
- http协议基础(二)请求和响应报文的构成
http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...
- 19. HTTP协议二:HTTP请求与响应、常见状态码
HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...
随机推荐
- POJ2806 Square
题目描述 给定\(2*1\)和\(2 * 2\)两种规格的地砖,请问\(2 * n\)的地面总共有多少种方法? 下面是铺满\(2*17\)的地面的示意图. 输入输出格式 输入 多组数据,每组数据包括1 ...
- 微信小程序setData局部刷新列表
利用setData局部刷新列表 当列表管理加载到第几页时,这个list的数据有十几条的,如果重新setData的话就要重新刷新和渲染列表, 这是个比较麻烦的事,当数据量大时,就会造成白屏, 这时就要局 ...
- 《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)
<MySQL必知必会>检索数据,排序检索数据 1.检索数据 1.1 select 语句 为了使用SELECT检索表数据,必须至少给出两条信息一想选择什 么,以及从什么地方选择. 1.2 检 ...
- Shell脚本之for循环语句的应用
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同.这时候可以使用for循环语句,针对不同的取值重复执行相同的命令序列. for循环语句的语法结构: ...
- .NET Core + K8S + Apollo 玩转配置中心
1.引言 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...
- day35:线程队列&进程池和线程池&回调函数&协程
目录 1.线程队列 2.进程池和线程池 3.回调函数 4.协程:线程的具体实现 5.利用协程爬取数据 线程队列 1.线程队列的基本方法 put 存 get 取 put_nowait 存,超出了队列长度 ...
- 6.oracle用户管理口令
一.使用profile管理用户口令概述:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项时 ...
- Hbase写入流程图
写入流程图
- 自我介绍网页填写表格PHP,JavaScript,html,css代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 独立集(bubble) 题解
问题描述 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两个东西结合在一起.众所周知,独立集 ...