Http请求与响应

Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定。

请求部分由三部分组成:

  • Requset line:请求行,位于第一行
  • Request headers:请求消息头,从第二行开始至第一个空行结束
  • Request body:请求正文,从第一个空行之后的都是正文

响应部分也由三部分组成:

  • Response line:响应行,位于第一行
  • Response headers:响应消息头,从第二行开始至第一个空行结束
  • Response body:响应正文,从第一个空行之后的都是正文

一、Http请求

Http请求具体格式如下:

Method Path-to-resource Http/Version-number

User-agent 浏览器的类型 Accept 浏览器接受的MIME类型 Accept language 用户选择的接受语言 Accept-charset 用户首选的编码字符集 ……

空行

Option Request Body

①请求行:

1.Method为请求方式,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE,常用的是GET和POST

GET的特点:默认的请求方式。 当请求的资源路径为/SdustExam/Login.jsp?username=admin&password=123456时,GET方式会把表单的请求的数据放在请求的URI的后面,?username=admin&password=123456,这样会暴露数据,而且请求行长度有限。

POST的特点(经常使用的):借助HTML中的form表单。<form action="Login.jsp" method="post">请求参数出现在正文部分,长度木有限制,相对安全。

2.Path-to-resource :请求的资源的URI。例如/SdustExam/Login.jsp

3.Http/Version-number:客户端使用的协议的版本,有HTTP/1.0和HTTP/1.1。

HTTP/1.0:特点:每次请求服务器上的资源都要建立新的连接,响应完毕后都会关闭连接。是无状态的协议。 HTTP/1.1:特点:在一次TCP/IP连接的基础上可以发出多次请求和得到多次的响应。比1.0多了一些请求和响应头。

②请求消息头

向服务器传递附加信息

Accept:通知服务器,浏览器可以接受的MIME类型。(文件系统中用文件扩展名区分数据的类型。网络上用MIME类型来区分数据类型。Tomcat\conf\web.xml) MIME类型名称:大类型/小类型 如text/html、text/css等等 Accept-Charset:通知服务器,浏览器支持的字符集,如gbk,utf-8 Accept-Encoding:通知服务器,浏览器能够解码的数据压缩方式。比如:gzip Accept-language:通知服务器,所希望的语言 Host:请求的主机和端口 Referer:是一个URL地址。取值是当前页面之前的那个页面地址的。防盗链用 Content-Type:通知服务器,请求正文的MIME类型。取值:application/x-www-form-urlencoded默认值,对应的是form表单的enctype属性 If-Modified-Since:通知服务器,缓存的文件的最后修改时间。 User-Agent:通知服务器,浏览器类型. Content-Length:表示请求消息正文的长度 Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 ) Cookie:这是最重要的请求头信息之一(会话有关)

二、http响应

http响应具体格式如下:

Http/Version-number  Statuscode  message

Server 服务器的类型信息 Content-type 响应的MIME类型信息 Content-length 被包含在相应类型中的字符数量 ……

空行

Option Response Body

①响应行:

Http/Version-number:服务器用的协议版本 Statuscode:响应码。代表服务器处理的结果的一种表示,常用的响应码有:       200:正常       302/307:重定向       304:服务器的资源没有被修改       404:请求的资源不存在       500:服务器报错了 message:响应码描述。例如200的描述为OK

②响应消息头:

Location:通知客户端,指示新的资源的位置(结合302/307来用。请求重定向) Server:通知客户端,服务器的类型 Content-Encoding:通知客户端,响应正文的压缩编码方式。常用的是gzip。 Content-Length:通知客户端响应正文的数据大小 Content-Type:通知客户端响应正文的MIME类型 Refresh:让浏览器自动刷新。取值为整数(刷新的时间间隔,单位是秒)      Refresh:3      Refresh:3;URL=其他资源的URI Content-Disposition:通知客户端,以下载的方式打开资源。 Content-Disposition:attachment;filename=1.jpg Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie(会话有关) Expires: -1 网页的有效时间。单位是毫秒,-1为通知客户端不要缓存 Cache-Control: no-cache (1.1)  通知客户端不要缓存 Pragma: no-cache (1.0) 通知客户端不要缓存

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏苦逼的码农

Linux大人养成计划1---基础命令总结

刷了一波视频,现在把Linux的一些常用基本命令总结了下。学会这些,Linux的基本操作就会了。

10430
来自专栏全华班

“码码”再也不用担心我的代码被反编译了!

自己辛辛苦苦写出来的代码,被别人无情的反编译了怎么办? ? 一、背景 Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储...

81360
来自专栏企鹅号快讯

使用Symfony的Console组件构建命令行程序

我们新开设一门视频课程《构建命令行程序》。主要讲解如何使用symfony的console组件,构建命令行应用。在我们的印象中,php程序大部分是通过浏览器执行(...

26780
来自专栏耕耘实录

PHP学习笔记(3)--Mysql部分简单命令

8320
来自专栏蓝天

配置VIM语法高亮及自动缩进

原文:http://blog.sina.com.cn/s/blog_601331150100gjmk.html

22640
来自专栏Django中文社区

简单全文搜索

搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 Django Model 层提供的一些内置方法来完成。现在我们来为我们的博客提供一个简单的搜索功能...

48560
来自专栏互联网杂技

大家知道什么是git中的 .gitignore吗?

团队开发中,需要一种工具来协调我们的工作。因为代码不是由一个人写的,而是团队成员,每一个人都有自己的工作。于是呢,每天都有代码提交到项目里面,每天开始写的时候,...

34470
来自专栏沈唁志

Linux学习中常用操作命令

25250
来自专栏青青天空树

初识mfc

  今天主要了解了Visual C++的开发环境Visual Studio(话说以前都是用来调试控制台程序的)和用mfc写了一个最简单的程序。

14330
来自专栏Ryan Miao

CentOS7下mysql5.6修改默认编码

参考原文教程:Centos7下修改mysql5.6编码方式 解决网站中文显示问号 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所...

42060

扫码关注云+社区

领取腾讯云代金券