题目 46 - 题目 50
46.请说说 cookie 与 session 有什么区别?
Session:
- 定义:Session 是在服务端保存的一个数据结构,用于跟踪用户的状态。
- 存储位置:Session 可以保存在服务端的内存、数据库或文件中。
- 集群处理:在集群环境中,Session 服务器集群用于保存用户会话,通常使用内存中的缓存服务来存储 Session 信息。
Cookie:
- 定义:Cookie 是客户端保存用户信息的一种机制,用来记录用户的一些信息,如登录状态、偏好设置等。
- 实现 Session 跟踪:Cookie 通常用于实现 Session 跟踪,服务端在创建 Session 时会在 HTTP 协议中告诉客户端在 Cookie 中记录一个 Session ID。
- 客户端禁用 Cookie:如果客户端禁用了 Cookie,可以使用 URL 重写技术,通过在 URL 后面添加参数(如 sid=xxxxx)来识别用户。
- 用户体验:Cookie 也可以用来存储登录信息,以便用户下次访问时无需再次输入账号
47.即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别?
1.短轮询:
- 基本思路:客户端定期向服务器发送 HTTP 请求,服务器无论是否有数据更新都直接响应。
- 优点:简单易理解。
- 缺点:频繁的 HTTP 请求浪费资源,服务器压力大。
2.长轮询:
- 基本思路:客户端发起请求后,服务器先挂起请求,判断数据是否有更新。如果有更新则响应,否则在一定时间后返回。
- 优点:减少不 必要的 HTTP 请求次数。
- 缺点:连接挂起也浪费资源。
3.SSE(Server-Sent Events):
- 基本思想:服务器使用流信息向客户端推送信息,基于 HTTP 协议,客户端不会关闭连接,持续等待服务器推送的新数据。
- 优点:不需要建立过多 HTTP 请求。
- 缺点:浏览器兼容性有限,目前 IE/Edge 不支持。
4.WebSocket:
- 基本思想:服务器可以主动向客户端推送信息,全双工通信,通信双方可以相互发送消息。
- 优点:高性能,资源利用率高。
- 缺点:服务器端配置复杂。
性能上,WebSocket > SSE > 长轮询 > 短轮询。但考虑到浏览器兼容性,顺序可能相反。选择哪种通信方式取决于具体的使用场景和需求。
47.HTTP 1.0 和 HTTP 1.1 之间有哪些区别?
1、连接管理:
- HTTP 1.0:非持久连接,每个请求后连接断开。
- HTTP 1.1:持久连接,多个请求共享一个连接,提高效率。
2、 资源请求:
- HTTP 1.0:不支持断 点续传。
- HTTP 1.1:支持断点续传,通过 Range 头域。
3、缓存控制:
- HTTP 1.0:使用 If-Modified-Since 和 Expires。
- HTTP 1.1:增加 ETag、If-Unmodified-Since、If-Match、If-None-Match 等。
4、主机名(Host)字段:
- HTTP 1.0:URL 不包含主机名,假设每个服务器有唯一 IP。
- HTTP 1.1:URL 包含主机名,支持虚拟主机。
5、请求方法:
- HTTP 1.1:新增 PUT、HEAD、OPTIONS 等方法。
48.options 请求方法及使用场景
OPTIONS 请求方法的主要用途有两个:
- 获取服务器支持的所有 HTTP 请求方法;
- 用来检查访问权限。例如:JS 的 XMLHttpRequest 对象进行 CORS 跨域资源共享时,对于复杂请求,就是使用 OPTIONS 方法发送嗅探请求,以判断是否有对指定资源的访问权限。
49.HTTP Request Header 和 Response Header 里面分别都有哪些比较重要的字段
HTTP Request Header
- Host:目标服务器的域名或 IP 地址。
- User-Agent:客户端(如浏览器)的标 识信息。
- Accept:客户端可接受的响应内容类型。
- Content-Type(仅 POST/PUT):请求体的数据类型。
- Content-Length(仅 POST/PUT):请求体的长度。
- Cookie:服务器之前设置的 cookie 信息。
- Authorization:身份验证信息。
- Referer:请求来源的 URL。
HTTP Response Header
- Content-Type:响应体的媒体类型。
- Content-Length:响应体的长度。
- Cache-Control:缓存控制策略。
- Expires:响应内容过期时间。
- Content-Encoding:响应体的压缩编码方式。
- Set-Cookie:在客户端设置新的 cookie。
- Location:重定向的目标 URL。
- Access-Control-Allow-Origin:允许跨域请求的来源。
- ETag:资源的唯一标识,用于缓存验证。
50.URI、URL、URN 分别是什么?
- URI:统一资源标志符(Universal Resource Identifier)是一个广义的概念,它用于唯一标识互联网上的资源。URI 可以是 URL、URN 或其他形式,如 mailto:或 news:。
- URL:统一资源定位符(Universal Resource Locator)是 URI 的一个子集,它提供了一种具体的访问网络资源的方法,包括协议(如 http://)、域名或 IP 地址以及路径。URL 类似于现实世界的住址,它告诉你在互联网上如何找到特定的资源。
- URN:统一资源名称(Universal Resource Name)也是 URI 的一个子集,它标识资源的名字,但不提供访问资源的方式。URN 通常用于命名空间中的名称,如电子邮件地址(mailto:)或文件系统路径(file:///)。