这篇笔记记录http实用指南课上的内容以及扩展知识点。
什么是HTTP?
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
HTTP请求
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送的请求来测试服务器的功能性
HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
GET 向特定的资源发出请求。使用GET请求应该只被用于获取数据。
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。通常导致在服务器上的状态变化或副作用。
PUT 向指定资源位置上传其最新内容
DELETE 请求服务器删除指定资源
TRACE 回显服务器收到的请求,主要用于测试或诊断
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 PATCH 用于对资源应用部分修改。
Safe(安全的):不会修改服务器的数据。 GET HEAD OPTIONS Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的服务器的状态都是一样的。所有safe方法都是Idempotent的。
OPTIONS请求
GET与POST只是我们常用的请求方式。有时一个接口却发生了两次请求:
- 第一条的请求方式为OPTIONS
- 第二条请求,才是我们预想中的请求
options请求是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。
OPTIONS请求的原因
产生OPTIONS请求的原因包括以下几条:
1、产生了复杂请求
复杂请求对应的就是简单请求。
简单请求的定义是:
- 请求方法是GET、HEAD或者POST, 并且当请求方法是POST时,
Content-Type必须是application/x-www-form-urlencoded,multipart/form-data或着text/plain中的一个值。 - 请求中没有自定义HTTP头部。 所谓的自定义头部,在实际的项目里,我们经常会遇到需要在header头部加上一些token或者其他的用户信息,用来做用户信息的校验。
2、发生了跨域