当前位置: 首页 > 知识库问答 >
问题:

如何使用expressjs通过https提供页面?

晏和风
2023-03-14

我是nodejs/expressjs新手。有人能解释一下如何通过https服务网页吗?

我得换个方式问这个问题,stackoverflow在抱怨我的帖子主要是代码?

以下是错误转储:

app.get('/', function(request, response) {
    ^

类型错误:对象 # 在对象处没有方法“get”。(/home/john/startup/docm/w2.js:21:5) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at start (node.js:119:16) at node.js:901:3

下面是代码:

var express = require('express');
var   fs = require('fs');
var app = express();

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


var server = require('https').createServer(options);
var portNo = 8889;
var app = server.listen(portNo, function() {
  console.log((new Date()) + " Server is listening on port " + 8888);
});

app.get('/', function(request, response) {
 app.use(express.static(__dirname));
 console.log('app.get slash');
 var buf = new Buffer(fs.readFileSync('index1.html'), 'utf-8');
 response.send(buf.toString('utf-8'));

});

我是nodejs/expressjs新手。有人能解释一下如何通过https服务网页吗?

共有1个答案

秦宏盛
2023-03-14

应用程序的问题是,您正在用HTTPS实例覆盖Express实例。这是正确的做法:

var fs = require('fs');
var express = require('express');
var app = express();
var https = require('https');

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

var server = https.createServer(options, app);
server.listen(443, function() {
  console.log((new Date()) + ' Server is listening on port 443');
});

app.use(express.static(__dirname));
app.get('/', function(req, res) {
 console.log('app.get slash');
 var file = fs.readFileSync('index1.html', {encoding: 'utf8'});
 res.send(file);
});

这些是代码中的错误:

  1. 您不是将 Express 传递给 HTTPS,而是使用 HTTPS 实例覆盖 Express。
  2. 您没有将 Express 应用程序传递到 HTTPS 实例。
  3. Express static() 中间件应该在特定请求处理程序之外提供。
  4. 尽管 readFileSync() 已有一个编码选项,但您已将一个缓冲区传递给另一个缓冲区以设置其编码。
 类似资料:
  • 问题内容: 我想在localhost上的gunicorn下运行django项目。我安装并集成了Gunicorn。当我跑步时: 它可以工作,但是没有任何静态文件(css和js) 我在settings.py中禁用了debug和template_debug(将它们设置为false),但是仍然相同。我想念什么吗? 我称静态为: 问题答案: 在开发模式下以及使用其他服务器进行本地开发时,请将其添加到url.

  • 问题内容: 通过AJAX从标准HTTP页面调用HTTPS页面(例如信用卡授权服务,例如WorldPay)是否会有问题? 我无法想象为什么会有问题,响应将是HTML页面,然后我可以将其嵌入结果窗格或类似的页面? 问题答案: 是的,这将是跨域发布,并且将被浏览器阻止。

  • 问题内容: 我正在尝试托管一个我使用Facebook样板在本地创建和测试的React应用。 客户端应用程序与我使用node.js制作的API进行了交互,并且使用该API可以毫无问题地建立安全连接(通过node.js客户端发送我的SSL证书进行测试)。 但是,在使用react发送我的SSL证书而不是自签名证书时,我遇到了困难,这导致我使用chrome并尝试访问https://example.net:

  • 如何通过提供已配置用户的用户名和密码获得AWS令牌表单? 我想做的是有一个URL,它接受user/pass作为postparams并返回一个令牌。这里记录的三个“允许的OAuth流”都没有这个或任何其他网址 编辑:邮递员怎么做?我正在寻找类似于: 调用aws url并为池中的某个用户提供user/Pass AWS返回一个令牌 包括令牌与资源服务器的每个请求 资源服务器验证令牌

  • 给定一个使用Nestjs的MEVN堆栈,MongoDB(mongoose)我正在设置服务器端分页。我的方法是使用mongoose-aggregate-paginate-v2,但我无法从我的研究1中提取出我需要的内容,以便在Nestjs(typescript)和mongoose的框架内完成这项工作。谢谢你的帮助。。 在有关 Nestjs 猫鼬模型和猫鼬聚合分页 v2 设置的文档之后,我有以下内容:

  • 我正在编写一个python脚本,它将根据URL中给定的格式在本地保存pdf文件。例如。 我正在通过python脚本打开此URL: url包含大量图像和文本。一旦这个URL被打开,我想用python脚本以pdf格式保存一个文件。 这是我到目前为止所做的。 代码1: 代码2: 在上面的代码我得到: urllib2.HTTP错误401:未授权 如果使用代码2,如何传递授权详细信息?