8. HTTP
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:
OPTIONS: 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性,请求查询服务器的性能,或者查询与资源相关的选项和需求
HEAD :向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息,请求获取由Request-URI所标识的资源的响应消息报头
GET: 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问,请求获取Request-URI所标识的资源。
POST: 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改,在Request-URI所标识的资源后附加新的数据。
PUT: 向指定资源位置上传其最新内容,请求服务器存储一个资源,并用Request-URI作为其标识
DELETE: 请求服务器删除Request-URI所标识的资源。
TRACE :回显服务器收到的请求,主要用于测试或诊断。
CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器,保留将来使用。
当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合
GET/PUT/DELETE/PATCH方法:put,delete,get是幂等的,POST是不幂等的
POST/PUT/DELETE/PATCH方法:不安全的,GET是安全的
9. 安全方法和幂等方法
1)安全方法
开发者应当意识到他们的软件代表了用户在因特网上进行交互,并且应当告知用户,他们正在进行的操作可能对他们自身或者其他人有未曾预料的重要影响。
特别地,对于GET和HEAD方法而言,除了进行获取资源信息外,这些请求不应当再有任何其他意义。也就是说,这些方法应当被认为是“安全的”。客户端应当使用其他“非安全”方法,例如POST,PUT及DELETE来以特殊的方式(通常是按钮而不是超链接)使得客户能够意识到可能要负的责任(例如一个按钮带来的资金交易)或者被告知正在请求的操作可能是不安全的(例如某个文件将被上传或删除)。
但是,不能想当然地认为服务器在处理某个GET请求时不会产生任何副作用。事实上,很多动态资源会把这作为其特性。这里重要的区别在于用户并没有请求这一副作用,因此不应由用户为这些副作用承担责任。
2)幂等方法
假如在不考虑诸如错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者根本没有副作用,那么这些请求方法就能够被视作“幂等”的。GET,HEAD,PUT和DELETE方法都有这样的幂等属性,同样由于根据协议,OPTIONS,TRACE都不应有副作用,因此也理所当然也是幂等的。
假如某个由若干个请求做成的请求序列产生的结果在重复执行这个请求序列或者其中任何一个或多个请求后仍没有发生变化,则这个请求序列便是“幂等”的。但是,可能出现若干个请求做成的请求序列是“非幂等”的,即使这个请求序列中所有执行的请求方法都是幂等的。例如,这个请求序列的结果依赖于某个会在下次执行这个序列的过程中被修改的变量。
10. HTTPS
超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输
HTTPS与HTTP的差异
与HTTP的URL由“http://”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。
HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并(在没有使用旧版本的SSL时)被认为是安全的。
HTTP工作在应用层(OSI模型的最高层),但安全协议工作在一个较低的子层:在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。
HTTPS报文中的任何东西都被加密,包括所有报头和荷载。除了可能的CCA(参见限制小节)之外,一个攻击者所能知道的只有在两者之间有一连接这一事实。
e]
分享到:
相关推荐
3. `.project`:这是Eclipse项目的配置文件,定义了项目的类型、构建信息、Nature(项目特性)以及构建路径等。 4. `src`:这个目录通常包含项目的源代码。在RESTful应用中,可能有Java源文件,定义了RESTful服务的...
下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识。因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情。看看例子就知道个大概了,再看理论就容易理解多了。
首先我们来认识下RESTful Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www.test.com/user/view/id/1 表示获取id为1的用户信息,如果使用Restful风格,可以变成这样: ...
3. **JDBC(Java Database Connectivity)**:JDBC是Java访问数据库的标准接口,提供了连接、查询、更新数据库的能力。在JavaWeb应用中,JDBC用于实现数据的持久化存储。 4. **MVC(Model-View-Controller)**:这...
1. 微服务间的通信方式,如RESTful API、RabbitMQ、Kafka等消息中间件的使用。 2. 断路器模式的重要性,Spring Cloud Hystrix是如何帮助实现容错和降级的。 3. Spring Cloud Zuul或Spring Cloud Gateway作为API网关...
《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,...· 认识SOAP消息的结构 · 学习如何交付基于Java的RESTful Web服务和消耗商业RESTful服务 · 了解对基于SOAP和基于REST的Web服务的安全要求
10. **JAX-RS(Java API for RESTful Web Services)**:定义了创建RESTful服务的API,使得开发Web服务变得更加简单。 此外,非标准的规范,如Struts、Spring框架、Hibernate ORM等,虽然不是J2EE官方的一部分,但...
《构建基于Spring Boot和Kotlin的RESTful Web服务》 在现代Web开发中,RESTful API已经成为构建可扩展、高效且易于维护的应用程序的关键技术。...同时,你也会对如何构建符合REST原则的API有更深入的认识。
微服务结构鼓励前后端分离,使用RESTful API通信,降低了耦合度,提升了系统的可扩展性和可维护性。 【远程调用方式】 在微服务和SOA中,服务之间的通信通常涉及远程调用。常见的调用方式有RPC和HTTP。 RPC(远程...
【认识OCS:深入理解开放通信服务】 在IT领域,OCS通常指的是“开放通信服务”(Open Communication Services)。这是一个广泛的概念,涵盖了一系列用于构建、集成和管理通信服务的技术和平台。OCS的核心目标是提供...
在本主题“认识微服务-2.服务拆分和远程调用”中,我们将深入探讨微服务的核心组成部分:服务拆分和服务之间的远程调用。 服务拆分是微服务架构的基础,它的目标是实现应用程序的模块化,将复杂的大规模系统分解为...
这篇演讲稿,收录于名为“01+SDCC+-+胡峰+-+京东咚咚微服务架构从理论认识到实践落地.pdf”的文件中,对于想要了解和实施微服务架构的人来说,无疑是一份宝贵的学习资料。 微服务架构是一种将大型复杂应用拆分为一...
微服务架构是一种将大型复杂应用程序拆分为一组小型、独立的服务的方法,每个服务都能在其自己的进程中运行,通过轻量级通信机制(如HTTP RESTful API)互相协作。这种架构有助于提高系统的可伸缩性、可维护性和故障...
6. **项目生命周期管理**:认识到项目可能会经历启动、发展、成熟和废弃的不同阶段,理解"已放弃"可能意味着的项目状态变化。 通过深入研究这个压缩包的内容,可以进一步学习到具体的编程实践、服务部署和项目管理...
· 认识SOAP消息的结构 · 学习如何交付基于Java的RESTful Web服务和消耗商业RESTful服务 · 了解对基于SOAP和基于REST的Web服务的安全要求 · 学习如何在各种环境下部署JAX-WS服务 不管是学生还是有经验...
Transfer的缩写(不要试图去翻译它,你会发现三个字都认识,但合在一起就不知道它说啥了)。 要理解REST,首先在明确这几点: REST不是平台,不是软件,而是一套规范、一套倡议。就如同HTTP是一套规范,Google ...
3. **Ceph MDS (Metadata Server)**:MDS处理文件系统的元数据,提供对文件系统的访问。通过`ceph osd (mon|pg) dump`命令可以查看不同Map的状态信息。 **Ceph架构** Ceph的基础是RADOS (Reliable Autonomic ...
具体实现了创建项目、编码开发实体类及各模块层次分明的设计以及基于 RESTful API 进行了单元测试。 适合人群:有一定 Java 和 Spring Boot 开发经验的研发工作者,或者想要从事此类工作的软件工程师。 使用场景及...
3. **数据管理**:云计算需要高效的数据管理和检索机制,如Google的Bigtable和Apache的Cassandra,它们提供大规模、高性能的数据存储和查询服务。 4. **编程模式**:MapReduce是一种用于处理和生成大数据集的编程...
在当前的数字化时代,开发移动端应用已经成为企业及个人展示创意、...通过深入研究这个项目,开发者可以提升跨平台开发技能,理解如何构建高性能、易维护的小程序组件,同时也能对短视频领域的热门功能有更深入的认识。