一. 简述浏览器输入 URL 地址后发生的事情
1.1 描述
浏览器向 DNS 服务器查找输入 URL 对应的 IP 地址。
NS 服务器返回网站的 IP 地址。
浏览器根据 IP 地址与目标 web 服务器在 80 端口上建立 TCP 连接。
浏览器获取请求页面的 HTML 代码。
浏览器在显示窗口内渲染 HTML 。
窗口关闭时,浏览器终止与服务器的连接。
- 请介绍常见的 HTTP 状态码(至少五个)
状态码是由 3 位数组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理。
100 客户必须继续发出请求
101 客户要求服务器根据请求转换HTTP协议版本
2xx:成功–表示请求已被成功接收、理解、接受。
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
3xx:重定向–要完成请求必须进行更进一步的操作。
300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
4xx:客户端错误–请求有语法错误或请求无法实现。
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
5xx:服务器端错误–服务器未能实现合法的请求。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
- 请介绍常见的 HTTP 头部(至少五个)
3.1 HTTP 头部
更多完整内容,可以查看 《HTTP响应头和请求头信息对照表》
首部字段名 说明
Accept 告诉服务器,客户端支持的数据类型。
Accept-Charset 告诉服务器,客户端采用的编码。
Accept-Encoding 告诉服务器,客户机支持的数据压缩格式。
Accept-Language 告诉服务器,客户机的语言环境。
Host 客户机通过这个头告诉服务器,想访问的主机名。
If-Modified-Since 客户机通过这个头告诉服务器,资源的缓存时间。
Referer 客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链)
User-Agent 客户机通过这个头告诉服务器,客户机的软件环境。
Cookie 客户机通过这个头告诉服务器,可以向服务器带数据。
Connection 客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。
Date 客户机通过这个头告诉服务器,客户机当前请求时间
3.2 Request Header
举例:
Request Header 描述
GET /sample.Jsp HTTP/1.1 请求行
Host: www.uuid.online/ 请求的目标域名和端口号
Origin: http://localhost:8081/ 请求的来源域名和端口号 (跨域请求时,浏览器会自动带上这个头信息)
Referer: https:/localhost:8081/link?query=xxxxx 请求资源的完整URI
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 浏览器信息
Cookie: BAIDUID=FA89F036:FG=1; BD_HOME=1; sugstore=0 当前域名下的Cookie
Accept: text/html,image/apng 代表客户端希望接受的数据类型是html或者是png图片类型
Accept-Encoding: gzip, deflate 代表客户端能支持 gzip 和 deflate 格式的压缩
Accept-Language: zh-CN,zh;q=0.9 代表客户端可以支持语言 zh-CN 或者 zh (值得一提的是q(0~1)是优先级权重的意思,不写默认为1,这里 zh-CN 是1, zh 是0.9)
Connection: keep-alive 告诉服务器,客户端需要的 tcp 连接是一个长连接
- 请列举常用的 HTTP 方法,并介绍 GET 与 POST 请求之间的区别
4.1 HTTP Request Method
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP/1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
10 MOVE 请求服务器将指定的页面移至另一个网络地址。
11 COPY 请求服务器将指定的页面拷贝至另一个网络地址。
12 LINK 请求服务器建立链接关系。
13 UNLINK 断开链接关系。
14 WRAPPED 允许客户端发送经过封装的请求。
15 Extension-mothed 在不改动协议的前提下,可增加另外的方法。
4.2 GET 与 POST 请求之间的区别
区别内容 GET POST
点击返回/刷新按钮 没有影响 数据会重新发送(浏览器将会提示“数据被重新提交”)
添加书签 可以 不可以
缓存 可以 不可以
编码类型(Encoding type) application/x-www-form-rulencoded application/x-www-form-rulencoded or multipart/form-data 请为二进制数据使用 multipart 编码
历史记录 有 没有
长度限制 有 没有
数据类型限制 只允许 ASCLll 字符类型 没有限制,允许二进制数据
安全性 查询字符串会显示在地址栏的 URL 上,不安全,请不要使用 GET 请求提交敏感数据 因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以 POST 请求比 GET 请求安全,但也不是最安全的方式,如需要传送敏感数据,请使用数据加密。
可见性 查询字符串在地址栏的 URL 中可见 查询字符串在地址栏的 URL 中不可见
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。