Javascript 仅从index.html请求Express文件服务

Javascript 仅从index.html请求Express文件服务,javascript,jquery,html,node.js,express,Javascript,Jquery,Html,Node.js,Express,有没有办法通过get请求在Express中提供index.html并发送index.html请求的所有外部文件 例如,这里有一个非常简单的index.html页面 <!DOCTYPE html> <html> <head> <script src="jquery.js"></script> </head> </html> 现在,app.get('/',function(req

有没有办法通过get请求在Express中提供index.html并发送index.html请求的所有外部文件

例如,这里有一个非常简单的index.html页面

<!DOCTYPE html>
<html>
    <head>
        <script src="jquery.js"></script>
    </head>
</html>


现在,
app.get('/',function(req,res){res.sendFile('index.html')}
将发送index.html,但jquery.js将不会发送。我是否可以解决这个问题并允许发送请求的所有外部文件index.html?我知道我可以使用
app.use(express.static(path.join(u dirname,'public'));
尽管我不希望用户访问公用文件夹中的某些文件。

将库文件放在通过静态文件中间件公开的同一文件夹中

例如,我在一个名为
wwwroot
的文件夹中有我的客户机文件,包括
index.html
。在该文件夹中,我有一个文件夹
lib
,其中包含我的所有依赖项,因此我的
index.html
将引用
lib
中的文件

<!DOCTYPE html>
<html>
    <head>
        <script src="lib/jquery.js"></script>
    </head>
</html>
我不希望用户访问公用文件夹中的某些文件

如果不希望用户访问公用文件夹中的某些文件,则应从公用文件夹中删除这些文件

但是,如果您从公用文件夹中删除了这些文件,那么就不要期望它们可以提供给客户端

您可以检查请求是否是访问index.html的结果,比如检查Referer头或记住用户在一秒钟前访问了index.html,但一切都很容易避免


由于包含在index.html中而可以访问的每个文件也可以由用户下载。这就是Web的工作方式,没有办法绕过它。

将匿名和受保护的文档分开,并适当地提供它们。您已经有了工作代码-只需编写erst@akaphenom我还是想让公众知道ctoryso这些中间件本质上增加了一个点,它在这些目录中搜索文件,如果没有找到完全匹配的文件,它将返回到中间件中的下一个函数。它可能提供自定义/配置搜索的功能(我不记得了)。或者,您可以查看该代码并编写自己的版本-它应该非常简单。如何停止app.use(express.static(path.join(uu dirname,'public'));从app.use(express.static())的角度访问文件夹是公开文件夹。你的意思是如何阻止访问
public
中的文件夹?是的,这就是我的意思。你看过其他stackoverflow线程吗?例如,你的问题已经在这里讨论过了是的,我只是在看一个,但我不知道url匹配是如何工作的
let options = {
    dotfiles: 'ignore',
    etag: false,
    extensions: ['html', 'ts', 'css', 'js']
}