Tor 网络上托管 Express.js 的 HTTPS 问题:静态文件由于同源策略而被阻止

问题描述 投票:0回答:1

我正在使用带有nodejs的express框架开发一个网站,供学校学习网络安全/加密,我想通过Tor网络托管我的网站以获得额外的安全性/乐趣。我的服务器代码使用这些库:

const express = require('express');
const http = require('http');
const WebSocket = require('ws');
const path = require('path');
const helmet = require('helmet');
const crypto = require('crypto');
const rateLimit = require('express-rate-limit');
const fs = require('fs'); // for logging into a file

该网站通过 localhost: 3000 在主机操作系统上完美运行,但是当我在 Linux 发行版中部署时,它很难找到 html 中指定的脚本:

<link rel="stylesheet" type="text/css" href="style1.css"/> 
<script type="module" src="script1.js"></script>

在 Tor 开发工具中,我可以看到 Tor 尝试获取我的 script1.js 和 style1.css,但失败了,因为它使用 https 进行调用。即使我硬编码 html 以使用 http 调用洋葱地址。

<scripttype="module"src="http://vhw4esgaun7zckw4kstkrzfhischtxvyefyzitcvtejm6suny7d9l7yd.onion/script1.js"></script>

这就是我启动服务器的方式:

const app = express();
const server = http.createServer(app);

我在启动时收到此错误,我的网站将仅显示没有样式或脚本的 html:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://vhw4esgaun7zckw4kstkrzfhischtxvyefyzitcvtejm6suny7d9l7yd.onion/script1.js. (Reason: CORS request did not succeed). Status code: (null).

测试时,我在 Tor 浏览器上关闭了 https only 模式,在头盔中,我将 hsts 设置为 False,当我直接访问 http:// vhw4esgaun7zckw4kstkrzfhischtxvyefyzitcvtejm6suny7d9l7yd.onion/script1.js 时,它会正确显示我的代码,没有错误。另一方面,当我访问 https://vhw4esgaun7zckw4kstkrzfhischtxvyefyzitcvtejm6suny7d9l7yd.onion/script1 时,它永远不会加载,因为我没有使用 https。抱歉,如果答案很明显,我对网络开发非常陌生,只是想通过一个项目更好地理解加密和网络安全。欢迎提问!

我尝试使用硬编码的http调用我的静态文件,仍然使用https调用。添加了 cors 模块并允许所有来源错误持续存在。允许我的 csp 中的所有内容使用头盔,错误仍然存在。不知道该做什么。

node.js express https tor
1个回答
0
投票

您应该避免此类错误

const express = require('express');
const cors = require('cors');
const http = require('http');

const app = express();
app.use(cors()); // Enable CORS for all routes

const server = http.createServer(app);

遵循上述顺序。

© www.soinside.com 2019 - 2024. All rights reserved.