一. 简述浏览器输入 URL 地址后发生的事情
参考文章:《TCP三次握手和四次挥手协议》
1 浏览器向dns服务器查找输入URL对应的IP地址
2 DNS服务器返回网站的IP地址
3 浏览器根据IP地址与目标web服务器在80端口建立TCP连接
4 浏览器获取请求页面的HTML代码
5 浏览器在显示窗口内渲染HTML
6 窗口关闭时,浏览器终止对服务器的连接
二.请介绍常见的 HTTP 状态码(至少五个)
参考文章 《HTTP响应头和请求头信息对照表》
状态码是由三位数字组成,第一个数组定义了相应的类别,分别有五种取值:
1xx 指示信息:表示请求已接收,继续处理。
- 100 客户必须继续发出请求
- 101 客户要求服务器根据请求转换HTTP协议版本
2xx 成功:表示请求已被成功接收、理解、接受。
- 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
- 201 (已创建) 请求成功并且服务器创建了新的资源。(也就是通常所说的增删改查中的增)
- 202 (已接受) 服务器已接受请求,但尚未处理。
3xx 重定向:要完成请求必须进行更进一步的操作。(不常见)
- 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
- 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
4xx 客户端错误:请求有语法错误或请求无法实现。
- 400 (错误请求) 服务器不理解请求的语法。
- 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
- 403 (禁止) 服务器拒绝请求。
- 404 (未找到)没有在服务器中找到该资源
5xx 服务器端错误:服务器未能实现合法的请求。
- 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
- 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
- 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
- 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
- 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
- 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
3. HTTP 和 HTTPS 的区别和相同点
- https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
- http 是超文本传输协议,信息是明文传输, https 则是具有安全性的ssl加密传输协议。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http 的连接很简单,是无状态的; HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
4. 什么是跨域,如何解决跨域
参考文章:《前端常见跨域解决方案(全)》
- 什么是跨域
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
- 什么是同源策略?
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到 XSS 、 CSFR 等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
- 同源策略限制了以下行为:
Cookie
、localStorage和IndexDB
无法读取DOM
和JS
对象无法获取Ajax
请求发送不出去
- 常见跨域场景:
所谓的同源是指:域名、协议、端口均为相同。
http://www.a.cn/index.html
调用http://www.a.cn/server.php
非跨域。http://www.a.cn/index.html
调用http://www.b.cn/server.php
跨域,主域不同。http://abc.a.cn/index.html
调用http://def.b.cn/server.php
跨域,子域名不同。http://www.a.cn:8080/index.html
调用http://www.a.cn/server.php
跨域,端口不同。https://www.a.cn/index.html
调用http://www.a.cn/server.php
跨域,协议不同。localhost
调用127.0.0.1
跨域。
解决跨域
jsonp
跨域document.domain
+iframe
跨域window.name
+iframe
跨域location.hash
+iframe
跨域postMessage
跨域- 跨域资源共享
CORS
withCredentials
属性WebSocket
协议跨域node
代理跨域nginx
代理跨域
5. 请分别介绍 Cookie 和 Session 的作用及它们之间的区别
参考文章: 《3分钟搞懂Cookie与Session》
- cookie介绍
Cookie是存储在用户本地计算机上,用于保存一些用户操作的历史信息,当用户再次访问我们的服务器的时候,浏览器通过HTTP协议,将他们本地的Cookie内容也发到咱们服务器上,从而完成验证。
cookie的特点:
Cookie
是存储在浏览器客户的一小片数据;Cookie
可以同时被前台与后台操作;Cookie
可以跨页面存取;Cookie
是不可以跨服务器访问的;Cookie
有限制; 每个浏览器存储的个数不能超过300个,每个服务器不能超过20个,数据量不能超过4K;Cookie
是有生命周期的,默认与浏览器相同,如果进程退出,cookie会被销毁
-
Session介绍
Session 存储在我们的服务器上,就是在我们的服务器上保存用户的操作信息。
当用户访问我们的网站时,我们的服务器会成一个 Session ID
,然后把 Session ID
存储起来,再把这个 Session ID
发给 我们的用户,用户再次访问我们的服务器的时候,拿着这个 Session ID就
能验证了,当这个ID能与我们服务器上存储的ID 对应起来时,我们就可以认为是自己人。
session特点:
seesion
数据存储在服务器端;- 每一个会话分配一个单独的
session_id
; - 该
session_id
通过cookie
传送到前台,默认的session_id
名称是PHPSESSIONID
; - 前台只能看到
Session
的ID
,而不能修改Session
值; - 使用
Session
之前需要先开启会话; Session
存储在Session
数组$_SESSION
;Session
存储方式比较安全,但是如果Session
数量过多,会导致服务器性能下降;
cookie和session的区别
cookie | session | |
---|---|---|
定义 | 浏览器保存用户信息的文件,存储的数量和字符数都有限制 | 服务器把sessionID 和用户信息、用户操作,记录在服务器上,这些记录就称为session |
相同点 | 都是为了存储用户相关的信息 | |
存储 | 客户端 | 服务器 |
安全性 | 安全性不高,任何人都能直接查看 | 安全性高 |