HTTP请求和响应1:概述
HTTP的报文分为请求报文和响应报文,打开一个web页面后,浏览器将发起一个HTTP请求报文。HTTPserver收到请求后将回送一个响应报文。
报文的基本结构
HTTP的请求和响应报文都由三个部分组成:对报文进行描写叙述的起始行(start line)、包括属性的首部(header)块、以及可选的包括数据的主体(body)部分。
请求报文和响应报文在语法上有些区别,以下是请求报文的格式:
<method> <request-URL> <version>
<headers> <entity-body>
以下是响应报文的格式:
<version> <status> <reason-phrase>
<headers> <entity-body>
1)方法(method)
client希望server对资源运行的动作。
2)请求URL(request-URL)
命名了所请求资源。或者URL路径组件的完整URL。
3)版本号(ersion)
报文所使用的HTTP版本号,格式为:
HTTP/<major>.<minor>
眼下使用的是1.1版本号。
4)状态码(status)
描写叙述了请求过程中所发生的情况。
5)原因短语(reason-phrase)
状态码的可读版本号,仅仅对人类有意义。
6)首部(header)
HTTP/1.1要求有效的请求或响应报文中必须包括特定的首部。每一个首部都包括一个名字。后面跟着一个冒号(:),然后是一个可选的空格,然后是一个值,最后是一个换行(CRLF)。首部由一个空行结束。
7)实体(entity-body)
包括由随意数据组成的数据框,报文能够不包括实体部分。
以下看一个详细的样例。请求报文:
GET /test/hi-there.txt HTTP/1.1
Accept: text/*
Host: www.joes-hardware.com
响应报文:
HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 19 Hi! I'm a message!
方法
经常使用的HTTP方法包含:
GET:从server获取一份文档
HEAD:仅仅从server获取文档的首部
POST:向server发送须要处理的数据
PUT:将请求的主体部分存储在server上
TRACE:对可能经过代理server传送到server上去的报文进行跟踪
OPTIONS:决定能够在server上运行哪些方法
DELETE:从server上删除一份文档
注意并非每一个server都实现了全部的方法。
状态码
状态码用于告诉client,发生了什么事情,状态码的分类例如以下:
100~199:信息提示
200~299:成功
300~399:重定向
400~499:client错误
500~599:server错误
以下列举了一些最常见的状态码:
200 OK:成功。请求的全部数据都在响应主体中
401 Unauthorized:须要输入username和password
404 Not Found:server无法找到所请求URL相应的资源
首部
首部是一些名/值对的列表。向请求和响应报文中加入一些附加信息。
HTTP规范定义了几种首部字段,应用程序也能够任意发明自己所用的首部。HTTP首部能够分为下面几类:
1)通用首部;
--既能够出如今请求报文中。也能够出如今响应报文中
2)请求首部;
3)响应首部;
4)实体首部;
--描写叙述主体的长度和内容。或者资源自身
5)扩展首部。
--规范中未定义的新首部
经常使用的首部例如以下:
Date:Tue,3Oct 1997 02:16:03 GMT ------server产生响应的日期
Content-length:15040 ------实体的主体部分包括了15040字节的数据
Content-type:image/gif ------实体的主体部分是一个GIF图片
Accept:image/gif,image/jpeg,text/html ------client能够接收GIF图片和JPEG图片以及HTML
长的首部行能够分为多行,提高可读性。多出来的每行前面要有一个空格或制表符(tab),如:
Server: Test Server
Version 10 ------以一个空格或者制表符開始
HTTP请求和响应1:概述的更多相关文章
- HTTP要点概述:三,客户端和服务器,请求和响应
一,客户端和服务器: HTTP协议主要用于客户端和服务器之间的通信. 1,客户端(client):请求访问资源的一端.(知道为啥用C表示客户端了吧) 2,服务器(server):提供资源响应的一端. ...
- Django底层剖析之一次请求到响应的整个流程
As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...
- VUE 数据请求和响应(axios)
1. 概述 1.1 简介 axios是一个基于Promise(本机支持ES6 Promise实现) 的HTTP库,用于浏览器和 nodejs 的 HTTP 客户端.具有以下特征: 从浏览器中创建 XM ...
- Ajax 中的高级请求和响应
一.概述 在本文中,重点介绍这个请求对象的 3 个关键部分的内容: 1.HTTP 就绪状态 2.HTTP 状态代码 3.可以生成的请求类型 这三部分内容都是在构造一个请求时所要考虑的因素:但是介绍这些 ...
- 初入网络系列笔记(4)HTTP请求和响应
一.借鉴说明,本博文借鉴以下博文 1.starok,HTTP必知必会,http://www.cnblogs.com/starstone/p/4890409.html 2.CareySon,HTTP协议 ...
- http协议(二)请求和响应报文的构成
http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...
- iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全
一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...
- struts2基础——请求与响应、获取web资源
一.请求与响应 Action1.含义:(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求.(2) 用于处理 Stru ...
- 浏览器-Tomcat服务器-请求与响应
浏览器访问服务器,本质就是请求资源. 比如请求静态资源:index.html,我们在浏览器地址栏输入:www.a.com/index.html,浏览器为了支持HTTP协议,发送的数据必须符合HTTP协 ...
随机推荐
- poj--1703--Find them, Catch them(并查集巧用)
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64 ...
- matlab2017a doc 关联注册码
在 matlab 2017a 的命令行界面,输入doc **查看相关函数的帮助文档时,必须要关联注册码才可使用. 这种显然是在网络连接状况下给出的提示,也即主机处在网络连接状态,试图默认查找的网络中的 ...
- 文字添加响应事件,js动态加载CSS, js弹出DIV
文字添加响应事件,js动态加载CSS, js弹出DIV <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- Ubuntu18.06 Mate桌面环境下VirtuslBox打开虚拟机“全局菜单”异常退出解决办法
在安装完Ubuntu18.06 Mate桌面环境后在VirtuslBox里打开虚拟机会出现“全局菜单”异常退出问题. 产生上面问题的原因是你的虚拟机可能在 显示= >屏幕= >硬件加速里勾 ...
- SPOJ 7258 SUBLEX 后缀数组 + 二分答案 + 前缀和
Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...
- [POI2002][HAOI2007]反素数 数论 搜索 好题
题目描述: 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4, ...
- 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...
- caioj 1083 动态规划入门(非常规DP7:零件分组)(LIS)
这道题题目给的顺序不是固定的 所以一开始要自己排序,按照w来排序 后来只要看l就可以了 然后求最长下降子序列即可(根据那个神奇的定理,LIS模板里有提到) #include<cstdio> ...
- caioj 1072 动态规划入门(二维一边推5:最长公共子序列 LCSS加强版)
在51nod刷到过同样的题,直接秒杀 见https://blog.csdn.net/qq_34416123/article/details/81697683 #include<cstdio> ...
- ZJU 1346 Comparing Your Heroes 状态压缩DP 拓扑排序的计数
做多校的时候遇见一个求拓扑排序数量的题,就顺便来写了一下. 题意: 你有个朋友是KOF的狂热粉丝,他有一个对其中英雄的强弱比较,让你根据这些比较关系来给这些英雄排名.问一共有多少种排名方式. 思路: ...