Node.js http服务器中的NodeJS err ssl协议错误

Node.js http服务器中的NodeJS err ssl协议错误,node.js,express,ssl,Node.js,Express,Ssl,我有一个http服务器,我不知道为什么它不运行 index.js文件: const express = require("express"); const app = (global.app = express()); const helmet = require("helmet"); const server = require("http").createServer(app); const io = (global.io = re

我有一个http服务器,我不知道为什么它不运行

index.js文件:

const express = require("express");
const app = (global.app = express());
const helmet = require("helmet");
const server = require("http").createServer(app);
const io = (global.io = require("socket.io")(server));
const config = require("./config.js");

//Middleware
app.use(helmet());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

require("./socket")(io);
require("./router")(app);

server.listen(config.PORT, () => console.log(`Listen on port ${config.PORT}...`));
路由器文件:

const express = require("express");
const path = require("path");

module.exports = (app) => {
  app.use(express.static(path.join(__dirname, "/../public/main")));
  app.use("/board/:id", express.static(path.join(__dirname, "/../public/paint")));
  app.get("*", (req, res) => {
    res.status(404).sendFile(path.join(__dirname, "/../", "/public/404/404.html"));
  });
};
Chrome显示错误:

GET https://10.0.1.55:5000/board/jsdbf/style.css net::ERR_SSL_PROTOCOL_ERROR
GET https://10.0.1.55:5000/socket.io/socket.io.js net::ERR_SSL_PROTOCOL_ERROR

适用于所有js、css和IMG。index.html被正确加载。

我不是内容安全策略方面的100%专家,但我注意到了一些事情

如前所述,使用头盔时会出现
net::ERR\u SSL\u PROTOCOL\u ERROR
问题(
app.use(helmet())
)。我不认为解决方案是根本不使用头盔,因为它为应用程序提供了安全性

在对所有头盔(contentSecurityPolicy、dnsPrefetchControl、expectCt、frameguard等)执行暴力后,我发现
contentSecurityPolicy
正在创建错误。文档中说,升级不安全请求指令指示用户代理将站点的所有不安全URL(通过HTTP提供的URL)视为已被安全URL(通过HTTPS提供的URL)取代

所以为了解决这个问题,同时使用头盔,我改变了这一点:

app.use( helmet() );
为此:

app.use( helmet() );
app.use(helmet.contentSecurityPolicy({
  directives: {
    ...defaultDirectives,
  },
}));

这样,我仍然使用头盔,但CSP指令并没有强制HTPP使用HTTPS。请记住,应在生产环境中设置升级不安全请求指令。

我不是内容安全策略方面的100%专家,但我注意到了一些问题

如前所述,使用头盔时会出现
net::ERR\u SSL\u PROTOCOL\u ERROR
问题(
app.use(helmet())
)。我不认为解决方案是根本不使用头盔,因为它为应用程序提供了安全性

在对所有头盔(contentSecurityPolicy、dnsPrefetchControl、expectCt、frameguard等)执行暴力后,我发现
contentSecurityPolicy
正在创建错误。文档中说,升级不安全请求指令指示用户代理将站点的所有不安全URL(通过HTTP提供的URL)视为已被安全URL(通过HTTPS提供的URL)取代

所以为了解决这个问题,同时使用头盔,我改变了这一点:

app.use( helmet() );
为此:

app.use( helmet() );
app.use(helmet.contentSecurityPolicy({
  directives: {
    ...defaultDirectives,
  },
}));

这样,我仍然使用头盔,但CSP指令并没有强制HTPP使用HTTPS。请记住,应在生产环境中设置升级不安全请求指令。

您试图使用HTTPS访问服务器,但服务器上未配置HTTPS。使用
http://...
而不是
https://...
访问服务器。昨天相同的代码工作正常:/Firefox的日志:http:Content Security Policy:无法处理未知指令“script src attr”内容安全策略:页面设置阻止加载“内联”资源(“script src”)。无法为源为“”的“脚本”加载fingerprint-protection.js:286:17。10.0.1.55:5000:31:1未能加载源为“”的“脚本”。10.0.1.55:5000:32:1内容安全策略:页面设置阻止加载“内联”资源(“脚本src”)。fingerprint-protection.js:286:17上两条评论中的错误与SSL无关,因此与您的原始问题无关强制在HttpSy中调用您试图使用HTTPS访问服务器,但服务器上未配置HTTPS。使用
http://...
而不是
https://...
访问服务器。昨天相同的代码工作正常:/Firefox的日志:http:Content Security Policy:无法处理未知指令“script src attr”内容安全策略:页面设置阻止加载“内联”资源(“script src”)。无法为源为“”的“脚本”加载fingerprint-protection.js:286:17。10.0.1.55:5000:31:1未能加载源为“”的“脚本”。10.0.1.55:5000:32:1内容安全策略:页面设置阻止加载“内联”资源(“脚本src”)。fingerprint-protection.js:286:17上两条评论中的错误与SSL无关,因此与您的原始问题无关强制使用HTTPS进行调用