“粽”情端午,“爸”气十足!经典http问题,让你脱颖而出

394 阅读5分钟

“粽”情端午,“爸”气十足!端午将至,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 请求实现,因为在注解提交之后站点已经不同了。

总结

今天就先分享到这里吧,希望对大家有所帮助,也祝大家端午节快乐!