简单请求
符合以下特征的 HTTP 请求为简单请求
- HTTP 请求方法为 GET 或 HEAD 或 POST
HTTP 请求方法一共有 9 种 :
序号 | 方法 | 描述 |
1 | GET | 从服务器获取信息 |
2 | HEAD | 从服务器获取报头 |
3 | POST | 向服务器传递信息,如提交表单/上传文件,数据被包含在请求体中,通常用于新增/修改数据库中的数据 |
4 | PUT | 传递新数据取代服务器的旧数据 |
5 | DELETE | 删除服务器的数据 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器 |
7 | OPTIONS | 查看服务器的性能 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
9 | PATCH | 对 PUT 方法的补充,用来对已知资源进行局部更新 |
(加粗的为最常见的请求方式)
【面试题】GET和POST有什么区别?
- Content-Type 的值为 text/plain 或 multipart/form-data 或 application/x-www-form-urlencoded
Content-Type 表示HTTP请求中传递信息的数据类型,可取值为:
- text/html: HTML格式
- text/plain:纯文本格式
- text/xml: XML格式
- image/gif:gif 图片格式
- image/jpeg:jpg 图片格式
- image/png:png 图片格式
- application/json:JSON数据格式
- application/pdf:pdf格式
- application/msword:Word文档格式
- application/octet-stream: 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded: 表单提交数据的格式
- application/xhtml+xml:XHTML格式
- application/xml: XML数据格式
- application/atom+xml:Atom XML聚合格式
- multipart/form-data: 表单中上传的文件的媒体格式类型
(加粗的为最常见的四种值)
- 没有自定义的 Header
预检请求 preflight
如果 HTTP请求不属于上述的简单请求,浏览器就会先自动使用 HTTP的 OPTIONS 方法向服务器发出一个预检请求,用于检查服务器是否支持CORS(Cross-Origin Resource Sharing,跨域资源共享)。
当服务器响应预检请求,告诉客户端其支持CORS后,才会正式发起原计划的HTTP请求。
流程图如下:
预检请求中同时携带了下面两个首部字段:
服务器将据此决定,该实际请求是否被允许。
如流程图中的范例,服务器对预检请求的响应为
在有效期内,浏览器不会对同一请求再次发起预检请求。
浏览器自身也维护了一个有效期,与服务器返回的有效期想比较,以较短的有效期为准。