`
zwdsmileface
  • 浏览: 154757 次
社区版块
存档分类
最新评论

浅谈HTTP协议中请求方法以及一些常见错误

阅读更多
请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:
 GET: 请求指定的页面信息,并返回实体主体。
 HEAD: 只请求页面的首部。
 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
 PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
 DELETE: 请求服务器删除指定的页面。
 OPTIONS: 允许客户端查看服务器的性能。
 TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
 PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
 MOVE: 请求服务器将指定的页面移至另一个网络地址。
 COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
 LINK: 请求服务器建立链接关系。
 UNLINK: 断开链接关系。
 WRAPPED: 允许客户端发送经过封装的请求。
 Extension-mothed:在不改动协议的前提下,可增加另外的方法。


当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:
① 客户方错误
100 继续
101 交换协议
② 成功
200 OK
201 已创建
202 接收
203 非认证信息
204 无内容
205 重置内容
206 部分内容
③ 重定向
300 多路选择
301 永久转移
302 暂时转移
303 参见其它
304 未修改(Not Modified)
305 使用代理
④ 客户方错误
400 错误请求(Bad Request)
401 未认证
402 需要付费
403 禁止(Forbidden)
404 未找到(Not Found)
405 方法不允许
406 不接受
407 需要代理认证
408 请求超时
409 冲突
410 失败
411 需要长度
412 条件失败
413 请求实体太大
414 请求URI太长
415 不支持媒体类型
⑤ 服务器错误
500 服务器内部错误
501 未实现(Not Implemented)
502 网关失败
504 网关超时
505 HTTP版本不支持
关于实体头部的内容还可以有:
Last Modified :请求文档的最近修改时间。
Expires :请求文档的过期时间。
Connect-length:文档数据的长度。
WWW-authenricate:通知客户端需要的认证信息。
Connect-encoding :说明有无使用压缩技术。
Transfer-encoding :说明采用的编码变换类型。
标准Http协议支持六种请求方法,即:
0,GET
1,HEAD
2,PUT
3,DELETE
4,POST
5,OPTIONS
但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。
0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1,HEAD:HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
2,PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
3,DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
4,POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。
5,OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
其实还有一个TRACE方法,不过这个基本上不会用到,这里就不介绍了。以上的六种方法,我们可以跟数据库的CRUD增删改查操作对应起来:
CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE
这样一来就实现了HTTP和数据库操作(其实不光是数据库,任何数据如文件图表都是这样)的完美统一,这也是REST的精髓之一。
2
1
分享到:
评论

相关推荐

    浅谈Java串行端口技术协议

    串行通信中常见的边线控制方式包括: - 奇偶校验:用于检测数据传输错误。 - 数据终端就绪(DTR)与数据设置就绪(DSR):用于设备之间的状态指示。 - 请求发送(RTS)与清除发送(CTS):用于流控,防止数据溢出。 4. 如何...

    浅谈黑客与网络安全-.docx

    2.4 端口扫描 所谓端口扫描,就是利用Socket编程与目标主机的某些端口建立TCP连接、进行传输协议的验证等,从而侦知目标主机的扫描端口是否处于激活状态、主机提供了哪些效劳、提供的浅谈黑客与网络安全-全文共2页...

    浅谈jquery中ajax跨域提交的时候会有2次请求的问题

    例如,HTTP协议中的OPTION请求是一种预检请求,用于确定跨域请求是否安全,是否可以被服务器接受。在Ajax跨域请求时,浏览器会首先发送一个OPTION请求进行预检,然后再发送实际的GET或POST请求。因此,我们可以在...

    31-浅谈SSRF漏洞1

    检测SSRF攻击的方法通常涉及监控日志,寻找异常的内网IP请求,尤其是连续且具有猜测性质的请求。此外,异常的响应信息或错误提示也可能暴露出SSRF的存在。 防御SSRF攻击,企业应采取以下策略: 1. 过滤并验证远程...

    浅谈H5前端性能测试实践1

    在本文中,我们将探讨H5前端性能测试的实践方法,主要关注H5页面加载过程、白屏问题的分析以及解决卡慢问题的策略。H5因其灵活性、轻量化和跨平台特性,在各种业务场景中广泛应用,但其性能表现相较于原生应用常常略...

    浅谈python requests 的put, post 请求参数的问题

    ### 浅谈Python Requests 库中的PUT与POST请求参数处理 在进行Web开发或API测试时,经常会遇到需要向服务器发送数据的情况。Python作为一种广泛使用的编程语言,提供了强大的`requests`库来帮助开发者轻松实现HTTP...

    漏洞扫描器漏洞扫描器漏洞扫描器

    在网络安全领域,漏洞扫描器是至关重要的工具,它们用于自动发现网络设备、操作系统、应用程序中存在的安全漏洞,以便于及时修复,提高系统的安全性。本文将深入探讨漏洞扫描器的工作原理、主要技术、特点以及系统...

    计算机系统安全论文计算机多媒体论文:浅谈计算机系统安全.pdf

    ARP(地址解析协议)攻击主要通过欺骗网络中的ARP表,将数据包导向错误的地址,从而实施中间人攻击或拒绝服务攻击。为防止ARP攻击,用户可以启用ARP绑定,将IP地址与MAC地址进行固定映射,减少欺骗的可能性;或者...

    浅谈golang的http cookie用法

    本文将深入探讨Golang中HTTP Cookie的基本概念、常见用法及其注意事项。 #### HTTP Cookie的基本概念 HTTP Cookie是一种小型的数据存储机制,通常由服务器生成并发送给客户端(通常是用户的Web浏览器)。客户端在...

    浅谈django channels 路由误导

    ### 浅谈Django Channels 路由误导 在探讨Django Channels路由误导的问题之前,我们首先需要了解Django Channels的基本概念以及它与传统Django HTTP请求处理的区别。Django Channels是一个扩展包,允许Django应用...

    浅谈Python爬虫基本套路

    在这个过程中,还需要考虑如何应对反爬虫策略,以及如何优化爬虫性能,例如使用代理IP、设置延迟请求等。在实际应用中,爬虫开发者应当具备良好的编程基础,理解HTTP协议,熟悉HTML、CSS和JavaScript,以及一定的...

    浅谈django rest jwt vue 跨域问题

    总的来说,解决Django REST、JWT和Vue.js的跨域问题主要涉及理解同源策略,正确配置`django-cors-headers`中间件,以及在Django后端设置允许的源和请求方法。这样的配置不仅可以帮助开发者在开发环境中顺利进行前后...

    浅谈layui 数据表格前后台传值的问题

    数据表格的初始化是通过`table.render`方法实现的,该方法中可以指定表格的一些基本参数,如表格容器(`elem`)、数据接口地址(`url`)、字段(`field`)等。初始化时通常需要一个后台API接口来提供数据,这些数据...

    浅谈Volley加载不出图片的问题

    在HTTP协议中,URL通常使用"/"(正斜杠)作为路径分隔符,而不是"\"。因此,Volley在处理包含"\"的URL时可能出现问题,导致图片加载失败。 为了解决这个问题,我们可以编写一个简单的工具类,例如上述的`StringUtil...

    C#Socket编程经典教程

    #### 四、浅谈C# Socket编程及多线程 - **多线程基础**: 多线程编程是提高程序并发能力的重要手段。了解如何在 C# 中创建和管理线程。 - **线程安全**: 在使用 Socket 进行网络通信时,需要注意线程间的数据共享和...

    浅谈Android客户端与服务器的数据交互总结

    在Android客户端与服务器的数据交互中,通常涉及到网络通信方式、数据传输格式以及API设计规范等多个方面。以下将详细阐述这些知识点。 首先,Android客户端与服务器的通信方式主要包括HTTP和Socket。HTTP通信是...

    300lean 与 smart200 之间 TCP通讯案例

    在工业自动化领域,PLC(可编程逻辑控制器)间的通信是常见的需求,特别是在不同品牌或型号的设备间。本案例关注的是"300lean"和"smart200"这两种型号的PLC如何通过TCP(传输控制协议)进行通信。300lean和smart200...

    浅谈php(codeigniter)安全性注意事项

    避免在生产环境中公开这些信息,可以通过自定义错误页面或配置文件来实现。 强制全站使用HTTPS协议是保护用户数据传输安全的基础。即使在本地开发环境中,也应配置HTTPS,以养成良好的安全习惯。若某些功能无法使用...

    浅谈asp.net Forms身份验证详解

    ASP.NET Forms身份验证是Web应用程序中一种常见的用户身份验证机制,尤其适用于初学者。相比于将用户登录信息存储在Session中,Forms身份验证提供了更安全、更灵活的解决方案。本文将详细解析这一机制,并通过一个...

    简单了解单片机

    单片机作为微型计算机的一种,广泛应用于嵌入式系统中,承担着数据处理和...在协议制定时,还需考虑到错误处理机制,以应对可能出现的通信错误,保证单片机系统在遇到问题时能够给出正确的反馈,并进行相应的错误处理。

Global site tag (gtag.js) - Google Analytics