我目前正在使用socket.io
和NodeJS
来控制别的东西。这是我的代码到目前为止:Socket.io - 不允许客户端使用main.js文件查看文件
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs');
var contents = fs.readFileSync("data.json");
var remoteLayout = JSON.parse(contents);
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.get('/edit', function(req, res) {
res.sendFile(__dirname + '/edit.html');
});
app.use(express.static(__dirname));
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('disconnect', function() {
console.log('user disconnected');
});
});
http.listen(8080, function() {
console.log('listening on *:8080');
});
这是我的代码缩短到相关的部分。
所以我的问题是,当我在节点运行这段代码,我打开[myIPAddress]:8080
页它开辟了index.html
像它应该在Chrome浏览器上,它说[myIPAddress]:8080
。现在,如果我进入显示顶部网页网址的栏,然后将其更改为[myIPAddress]:8080/handler.js
,它会打开一个页面,并在其上打印出我的js脚本。我该怎么做才能让这个人不能去[myIPAddress]:8080/handler.js
页面?
我不确定它是否重要,但文件夹main.js
也有index.html
,edit.html
和handler.js
。
当为.js文件提出请求并正确处理响应时,您必须检查referer头。当然,使用开发者工具,任何人都可以看到js加载在页面中,所以,为什么要试图隐藏js代码 - 你不能使它看不见 –
所以我必须检查每个文件?此外,我对此很陌生,那么如何检查引用标头 - 是否是'app.get(...)'?我意识到,开发人员工具允许观众查看代码无论如何,但这更多是为了我的好奇心... –
我会认为你在app.get中使用正则表达式进行检查以捕获以''结尾的文件。 js'作为第一个参数 - 但是,这只是一个猜测 –