“粽”情端午,“爸”气十足!端午将至,Aileen继续给大家送福利来了。在这样一个具有诗情画意,又其乐融融的日子,让我们回顾一下http的经典问题,让你脱颖而出,跟其它人不一样。
问题1:一张网页,要经历怎样的过程,才能抵达用户面前?
换句话说就是:一个页面从输入URL到页面加载显示完成,这个过程都发生了什么?也就是http协议的原理,下面我们来看一张图:
从客户端到服务器之间经历的过程:- 1,http协议的职责:生成对应目标web服务器的HTTP请求报文,请给我http://hack/account/web页面的资源;
- 2,tcp协议的职责:为了方便通信,将http请求报文分割成报文段,按序号分为多个报文段,把每个报文段可靠的传给对方;
- 3,ip协议的职责:搜索对方的地址,一边中转一边传送;
- 4,tcp协议的职责:从对方那里收到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文;
- 5,http协议的职责:对web服务器内容请求的处理,原来是想要这台计算机/account/上的资源啊。
问题2: 常用HTTP状态码及其含义?
- 200 (OK 客户端发过来的数据被正常处理)
- 204 (Not Content 正常响应,没有实体)
- 206 (Partial Content 范围请求,返回部分数据,响应报文中由Content-Range指定实体内容)
- 301 (Moved Permanently) 永久重定向
- 302 (Found) 临时重定向,规范要求_x001D_方法名不变,但是都会改变
- 303 (See Other) 和302类似,但必须用GET方法
- 304 (Not Modified) 状态未改变_x0008_ 配合(If-Match、If-Modified-Since、If-None_Match、If-Range、If-Unmodified-Since)
- 307 (Temporary Redirect) 临时重定向,不该改变请求方法
- 400 (Bad Request) 请求报文语法错误
- 401 (unauthorized) 需要认证
- 403 (Forbidden) 服务器拒绝访问对应的资源
- 404 (Not Found) 服务器上无法找到资源
- 500 (Internal Server Error)服务器故障
- 503 (Service Unavailable) 服务器处于超负载或正在停机维护
问题3:http与https的区别是什么?
首先,HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。
http与https的主要区别:
- 1,与https的区别https协议需要到ca申请证书,一般免费证书很少,需要交费。
- 2,http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- 3,http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
- 4,http的连接很简单,是无状态的。
- 5,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
问题4:用Node.js实现一个HTTP服务器程序?
var http = require('http');
var server = http.createServer(function (request, response) {
console.log(request.method + ': ' + request.url);
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('Hello world!
');
});
server.listen(8080);
console.log('Server is running at http://192.168.10.204:8080/');
代码解析:
1, 首先,导入http模块;
2,创建http server,并传入回调函数;
3, 在回调函数中:回调函数接收request和response对象,获得HTTP请求的method和url;
4, 再将HTTP响应200写入response, 同时设置Content-Type: text/html;
5, 最后将HTTP响应的HTML内容写入response;
6, 让服务器监听8080端口,就可以在浏览器中看到'Hello world!'的内容了。
问题5:GET与POST方法的区别?
- 1, 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
- 2, GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
- 3, 安全性问题。正如在第1点中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。
- 4, 安全的和幂等的。
注解:
- 所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。
- 换句话说,GET 请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。
- 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。
- POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了。
总结
今天就先分享到这里吧,希望对大家有所帮助,也祝大家端午节快乐!