Nodejs — для чего нужен параметр req.url?

#javascript #node.js

#javascript #node.js

Вопрос:

 var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(2020);  

Для чего нужен параметр req.url? Будет ли все в порядке, если я не буду его использовать? Кроме того, передача параметра в res.write(); приводит к тому же результату, что и передача параметра в res.write();

Комментарии:

1. Это базовый пример сервера, который возвращает URL-адрес запроса для любого запроса, отправленного к нему. Не использовать req.url нормально, вы могли бы вместо этого вызвать res.write("hello world!"); Also , если вы хотите создать веб-сайт, используя node в качестве серверной части, я определенно рекомендую использовать express и pug .

Ответ №1:

Предположим, вы создаете веб-приложение, которое загружает некоторые данные, когда пользователь нажимает на кнопку «выборка сообщений», теперь, что происходит, браузер запускает http-запрос и загружает данные с сервера.Однако, если пользователь откроет инструмент разработчика браузеров и перейдет на вкладку «Сеть» и нажмет кнопку «fetch post», тогда появится запись для Http-вызова, например: — http://domain.tld/fetch-posts .Итак, если пользователь скопирует ваш URL-адрес в скрипте an и вызовет его в цикле для огромного числа, например 10 ^ 9, тогда ваш сервер не сможет обслуживать других и, вероятно, выйдет из строя или, если он автоматически масштабируется, тогда бог может помочь вам оплатить стоимость.Эту проблему можно предотвратить без использования captcha с помощью req.url в NodeJS, чтобы использовать это, мы можем создать общий маршрут, например http://domain.tld/invoke и отправьте зашифрованные параметры для следующего вызываемого маршрута, а затем замените этот параметр на req.url на сервере, например req.url = req.body.path и вызовитеnext() с использованием ExpressJS.Таким образом, каждый раз, когда пользователь видит сетевую вкладку, существует один вид URL, т.е. http://domain.tld/invoke