Javascript 仅从index.html请求Express文件服务
有没有办法通过get请求在Express中提供index.html并发送index.html请求的所有外部文件 例如,这里有一个非常简单的index.html页面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
<!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']
}