TOP

node学习错题集

1.请求路径/favicon.ico

  问题:node http.createServer()创建服务器,用户请求一次,但是服务器显示两次请求:一次为用户请求,一次请求路径为/favicon.ico ??

  代码如下:

var http = require('http');
http.createServer(function(req,res){
   console.log( req.url ); 
})
.listen(8080);
console.log("The server is on ...");

  服务器显示如下:

    

  原因:

    第一条时URL地址为用户输入的客户端请求的目标URL地址,"/"代表用户的目标url地址为web应用程序的根目录.

    第二个目标URL地址问浏览器为页面在收藏夹中的显示图标.默认为favicon.ico.而自动发出的请求的目标URL地址.

 


2.服务器端重定向

  应用场景:

    用户访问的资源不存在,需要重定向到404界面  

    HTTP协议状态码 302表示重定向

http.createServer(function(request,response){
    
  response.writeHead(302, {
    'Location': 'your/404/path.html'
    //add other headers here...
  });//重定向
  response.end()

});

 


 

3.注意 相对路径

  开发过程中,前端后端的相对路径不同,需要清晰的分辨

  后端(server.js):

var http = require('http');
http.createServer(function(request,response){
   //var url = request.url;//此行错误
  var url = "./"+request.url;//将路径转换成相对于server.js的路径
  fs.readFile(url,
function(err,data){}); }).listen(8080);

  上述代码路径有问题,比如在浏览器中输入http://localhost:8080/html/index.html

  request.url 的值为 "/html/index.html"

  这时如果直接按照此路径去读取文件,肯定出错;

  因为路径"/html/index.html" 中的第一个"/"  在服务器端(linux) 表示linux根路径

  

  前端:

  如果项目代码目录如下:

    

  其中,server.js是创建服务器的脚本,当 node server.js开启服务器时,前端界面中的路径的根目录('/')就是server.js所在的目录

  比如在浏览器中输入http://localhost:8080/fs/sf.html,由于不存在,所以重定向到 html/404.html,

  以下是404.html中的代码:

<a href="/html/index.html">回到首页</a><!--绝对路径,根目录就是http://localhost:8080/;此根目录对应着server.js所在的路径;-->

<a href="./index.html">return index</a><!--相对路径,相对于/fs/-->

  当点击“回到首页”,发送的url为 "http://localhost:8080/html/index.html"

  当点击“return index”,发送的url为 "http://localhost:8080/fs/index.html",因此出错 

 

4.爬虫时使用request()函数报错

  以下错误并不是ssl/ 错误

  

  仅仅是请求端口写错

  stackoverflow : http://stackoverflow.com/questions/21135637/error140770fcssl-routinesssl23-get-server-hellounknown-protocol

 

posted @ 2016-08-25 23:38  RocketV2  阅读(173)  评论(0编辑  收藏  举报