Сервер узла HTTPS не возвращает веб-страницы - PullRequest
0 голосов
/ 20 апреля 2020

Итак, я только что превратил свое веб-приложение HTTP в HTTPS.

Итак, мой сервер. js в настоящее время выглядит как

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8080);

Это проект marko js, а мой сервер. js раньше выглядел как

require("./project").server({
  httpPort: process.env.PORT || 8080 // Optional, but added here for demo purposes
}); 

Теперь, когда я перехожу на любую из созданных мною веб-страниц, например localhost: 8080 / home, мне возвращается только hello world. Я предполагаю, что это связано с ответом, который я получил в моем методе создания сервера.

Как мне go вернуть мои веб-страницы, как предполагалось, или есть какие-либо ресурсы, которые могли бы указать мне правильное направление?

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

Это код, который вы должны обрабатывать запросы:

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8080);

Неважно, что запрашивает браузер, код, который вы написали всегда отвечает hello world.

Если вы хотите ответить чем-то другим, то вам нужно обратить внимание на объект req, посмотреть, что запрашивает браузер, и ответить чем-нибудь подходящим.

0 голосов
/ 20 апреля 2020

Мне только возвращен привет мир. Я предполагаю, что это связано с ответом, который я получил в своем методе создания сервера.

Если вы сами создаете сервер, вы отвечаете за передачу содержимого в ответы. В вашем случае вы всегда передаете hello world. В этом примере показано, как конкретно обрабатывать Marko при создании собственного http-сервера.

Суть в следующем. Хотя, если у вас несколько страниц, вам нужно будет отображать разные шаблоны в зависимости от req.url.

const page = require('./path/to/page.marko');
https.createServer(options, function (req, res) {
  res.setHeader('Content-Type', 'text/html');
  page.render({ data:123 }, res);
}).listen(8080);

Однако, похоже, вы используете проект marko-starter. Таким образом, для этого проекта, чтобы включить https, вы можете передать свои sslCert и sslKey в качестве параметров в конфигурацию проекта.

module.exports = require('marko-starter').projectConfig({
  sslKey: fs.readFileSync('key.pem'),
  sslCert: fs.readFileSync('cert.pem')
  /* other config */
});

0 голосов
/ 20 апреля 2020

ты уже посмотрел это как? https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

http.createServer(function (req, res) {
  fs.readFile(__dirname + req.url, function (err,data) {
    if (err) {
      res.writeHead(404);
      res.end(JSON.stringify(err));
      return;
    }
    res.writeHead(200);
    res.end(data);
  });
}).listen(8080);

Он работает с http, но я предполагаю, что вы также можете попробовать https.

Просто прочитайте вопросы безопасности в инструкции перед тем, как публиковать c на вашем сервере;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...