【问题标题】:Having a problem securing an Express API with TLS使用 TLS 保护 Express API 时遇到问题
【发布时间】:2022-01-01 16:23:16
【问题描述】:

我有一个在 Node JS 上使用 Express 运行的 REST API。

我一直遇到 CORS 问题,因为前端是 HTTPS,而后端 API 是 HTTPS,这很常见,但并不总是被报告为违规。

我正在尝试使用 Let's Encrypt 证书来保护 API,但我似乎遗漏了一些东西。

这里是初始化快递服务器的代码:

require('dotenv').config();

const https = require("https"),
fs = require("fs");

const app = require("./src/app");

const port = process.env.PORT || 8000;

https
.createServer(
    {
        key: fs.readFileSync('/etc/letsencrypt/live/myserver.com/privkey.pem', 'utf8'),
        cert: fs.readFileSync('/etc/letsencrypt/live/myserver.com/fullchain.pem', 'utf8')
    },
    app
 )
 .listen(8000, function() {
     console.log('HTTPS listening on PORT 8000');
 });

还有其他方法吗?还是我做错了?

CURL 仍然适用于 HTTP,这让我感到惊讶。不应该有 HTTP 服务器监听 8000。GET 调用在没有 SSL 配置的情况下工作,但 POST 总是失败。

所有 API 都在本地工作,只是当我将它推送到生产环境时它才会失败。但是,在本地,它没有运行 HTTPS,因此没有违规。

我还没有看到专门解决这个问题的帖子,所以我想知道我错过了什么。这一定是一种常见的情况。

感谢您的帮助。

【问题讨论】:

    标签: node.js express api-design tls1.3


    【解决方案1】:

    尝试以下任一解决方案,无论适合您:

     import * as Cors from 'cors';
    
     const cors = Cors( { origin: true } );
    
     app.use( cors );
    
    var cors = require('cors');
    
    var app = express();
    
    app.use(cors());
    

    【讨论】:

    • 感谢您的回复。我在导入的 app.js 页面上定义了 cors。你认为它不会过去吗?
    猜你喜欢
    • 2019-12-01
    • 2023-02-13
    • 2019-12-24
    • 2018-04-28
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多