Показать сообщение отдельно
  #4 (permalink)  
Старый 13.06.2018, 06:54
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Данный "учебный пример" (для понимания некоторых общих принципов взаимодействия браузеров с серверами) примерно так:
var http = require('http');
var fs = require('fs');
var url = require('url');

http.createServer(function(req, res) {
	
  var urlParse = url.parse(req.url, true);
	
  if(urlParse.pathname == '/index.html' && checkAccess(req)) {
    console.log(req.url);
    fs.readFile(__dirname + '/index.html', function(err, content) {
      if(err) console.log(err);
      res.end(content);
    });
  }else if(req.url == '/ball.png') {
    console.log(req.url);
    fs.readFile(__dirname + req.url, function(err, file) {
      if(err) console.log(err);
      res.setHeader('Content-Type', 'image/png');
      res.end(file);
    });
  }else{
    res.statusCode = 403;
    res.end("Tell me the secret to access!");
  }
	
}).listen(3000, () => console.log('On PORT 3000'));

function checkAccess(req) {
	return url.parse(req.url, true).query.secret == 'o_O';
}

А вообще, см. камент выше - так статику, конечно, не выдают (хоть одна картинко, хоть 100).
Ну и в целом, pathname в Node.js (и не только в Node.js, ну да ладно) - это просто строка, произвольный набор символов (нопремер, набор символов "/index.html", который можно заменить на набор "/asadsfghjk" - и всё будет работать так же), никакого указания на пути или файлы она в себе не несёт.

Последний раз редактировалось Audaxviator, 13.06.2018 в 12:46.
Ответить с цитированием