测试开发面试准备之HTTP协议-Http常用请求方法

那么HTTP请求报文和响应报文会是什么格式呢?

起始行:如 GET / HTTP/1.0 (请求的方法  请求的URL 请求所使用的协议)

头部信息:User-Agent  Host等成对出现的值

主体

不管是请求报文还是响应报文都会遵循以上的格式。

那么起始行中的请求方法有哪些种呢?

GET: 完整请求一个资源 (常用)

HEAD: 仅请求响应首部

POST:提交表单  (常用)

PUT: (webdav) 上传文件(但是浏览器不支持该方法)

DELETE:(webdav) 删除

OPTIONS:返回请求的资源所支持的方法的方法

TRACE: 追求一个资源请求中间所经过的代理(该方法不能由浏览器发出)

那什么是URL、URI、URN?

URI  Uniform Resource Identifier 统一资源标识符

URL  Uniform Resource Locator 统一资源定位符

格式如下:  scheme://[username:[email protected]]HOST:port/path/to/source

http://www.magedu.com/downloads/nginx-1.5.tar.gz

URN  Uniform Resource Name 统一资源名称

URL和URN 都属于 URI

为了方便就把URL和URI暂时都通指一个东西

请求的协议有哪些种?

有以下几种:

http/0.9: stateless

http/1.0: MIME, keep-alive (保持连接), 缓存

http/1.1: 更多的请求方法,更精细的缓存控制,持久连接(persistent connection) 比较常用

下面是Chrome发起的http请求报文头部信息

其中

Accept  就是告诉服务器端,我接受那些MIME类型

Accept-Encoding  这个看起来是接受那些压缩方式的文件

Accept-Lanague   告诉服务器能够发送哪些语言

Connection       告诉服务器支持keep-alive特性

Cookie           每次请求时都会携带上Cookie以方便服务器端识别是否是同一个客户端

Host             用来标识请求服务器上的那个虚拟主机,比如Nginx里面可以定义很多个虚拟主机

那这里就是用来标识要访问那个虚拟主机。

User-Agent       用户代理,一般情况是浏览器,也有其他类型,如:wget curl 搜索引擎的蜘蛛等

条件请求首部:

If-Modified-Since 是浏览器向服务器端询问某个资源文件如果自从什么时间修改过,那么重新发给我,这样就保证服务器端资源

文件更新时,浏览器再次去请求,而不是使用缓存中的文件

安全请求首部:

Authorization: 客户端提供给服务器的认证信息;

什么是MIME?

MIME(Multipurpose Internet Mail Extesions 多用途互联网邮件扩展)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息,这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

MIME 遵循以下格式:major/minor 主类型/次类型 例如:

p_w_picpath/jpg
p_w_picpath/gif
text/html
video/quicktime
appliation/x-httpd-php

原文地址:https://www.cnblogs.com/william126/p/10886296.html

时间: 2024-08-30 09:55:04

测试开发面试准备之HTTP协议-Http常用请求方法的相关文章

测试开发面试准备之HTTP协议-TCP与UDP基本区别

TCP与UDP基本区别  1.基于连接与无连接  2.TCP要求系统资源较多,UDP较少:   3.UDP程序结构较简单   4.流模式(TCP)与数据报模式(UDP);   5.TCP保证数据正确性,UDP可能丢包   6.TCP保证数据顺序,UDP不保证 一般面试官都会问TCP和UDP的区别,这个很好回答啊,TCP面向连接,可靠,基于字节流,而UDP不面向连接,不可靠,基于数据报.对于连接而言呢,其实真正的就不存在,TCP面向连接只不过三次握手在客户端和服务端之间初始化好了序列号.只要满足T

测试开发面试准备之HTTP协议-Get, POST的区别?

GET参数通过URL传递,POST放在Request body中. GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被Bookmark,而POST不可以. GET请求会被浏览器主动cache,而POST不会,除非手动设置. GET请求只能进行url编码,而POST支持多种编码方式. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留. GET请求在URL中传送的参数是有长度限制的,而POST么有. 对参数的数据类型,GET只接受ASCI

测试开发面试准备之HTTP协议-Http Https 的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号.密码等支付信息. 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间

测试开发面试题目汇总一

测试开发面试题目汇总 1. 项目经验 2. 测试的过程 3. 京东登录页面怎么测? 4. 如果一个普通用户,他的百度首页打不开,问题怎么定位?写出定位流程. 5.问简历上的第一个项目的详细情况,包括测试用例怎么写?怎么判断测试通过?项目的原理? 6.如果是做功能测试,能接受吗? 7.说一下你们工作中的测试流程 8.用她的手机给我看了下百度贴吧的发帖功能的界面,给我张纸,让我写出测试点(只需要考虑内容,表情,添加图片,@功能),写完讲一遍逻辑. 9  针对发朋友圈这个功能设计你的测试用例,请给出用

tomcat实现http协议中的请求方法

Tomcat是实现了http协议的web服务器. HttpServlet是整个J2EE体系的核心类.来自客户端的全部请求均有该类进行处理和转发.它由Tomcat根据web.xml中的servlet配置标记进行装载和管理. 以下是servlet继承结构. javax.servlet.httpClass HttpServlet java.lang.Object   javax.servlet.GenericServlet       javax.servlet.http.HttpServlet Al

HTTP协议、HTTP请求方法、常见状态码、HTTP消息

HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息主体外,其他都与GET方法相同,常用于测试链接有效性. 三. POST 与GET类似,但是有请求内容,比GET来说,相对安全. 四.PUT 在服务器建立文件,相对危险,一般关闭. 五.DELETE 删除服务器资源,相对危险,一般关闭. 六.TRACE 较为少见.可回显服务器收到的请求. 七.CONN

基于hi-nginx的web开发(python篇)——动态路由和请求方法

hi.py的提供的路由装饰器接受两个参数,第一个参数指定动态路由的正则模式,第二个参数指定同意的http请求方法列表. 比如: 1 @app.route(r"^/client/?$",['GET','POST']) 2 def client(req,res,param): 3 res.content('{}<br>{}<br>{}<br>{}<br>{}'.format(req.client(),req.method(),req.uri(

测试开发面试准备之Linux -常用Linux系统命令(二)

1.文件管理 cat -n diff log2014.log log2013.log chmod ugo-r file file命令用于辨识文件类型 file -i install.log find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进行显示. # find /var/log -type f -mtime +7 -ok rm {} \; cut

python测试开发(06-前端[HTML,JS,CSS]+ajax请求)

1.HTML 略 2.JS var i = 0;while (i < 10) { console.log(i); i++;} for (var j = 0; j < 10; j++) { console.log(j)} // for in:遍历循环// 遍历数组var aList=Array( 11,22,33,44,55);for(i in aList){ console.log(i); //遍历数组的下标 console.log(aList[i]) //遍历数组的值} // 遍历对象:遍历