gpt4 book ai didi

node.js - ExpressJS 无法通过 HTTPS 提供静态文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:37 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。最近,我在我的expressjs应用程序中添加了一个HTTPS服务器,它在大多数情况下运行得很好。异常(exception)情况是,从应用程序外部的文件夹中检索到的某些图像(静态数据,位于与 app.js 同一级别的名为“/data”的文件夹中)不再在整个网站上显示,而它们在 HTTP 服务器上却显示得很好。

我在 app.js 中使用以下行包含/data 文件夹:

app.use(express.static(path.join(_dirname, 'data')));

这些图像是通过 div 上的 css background-image 加载的缩略图。奇怪的是,在 HTTPS 服务器上,我仍然可以通过直接访问其 URL(通过控制台或地址栏)来访问图像,即使缩略图神秘地丢失了。该 URL 前面正确带有 https://,因此它是正确的服务器。

在控制台中,我收到状态代码 307 内部重定向,并且响应 header 下方的非权威原因旁边显示“委托(delegate)”。实际上,如果我单击“预览”或“响应”选项卡(顺便说一句,这全部在 Chrome 中),它会显示“无法加载响应数据”。可能是什么问题?

更新:我尝试将 HTTPS 端口更改为 3000,仅用于测试目的。令我惊讶的是,/data 文件夹中的图像加载并显示得很好。所以问题不在于 HTTPS,而在于端口……但我仍然不知道为什么。

总结一下迄今为止的结果:

  • 在端口 80、443 上运行:图像不显示
  • 在端口 1023、1024、3000 上运行:图像显示

有谁知道这是怎么回事吗?

最佳答案

经过广泛的测试,我得出的结论是,这可能是一个针对我自己的情况的问题,而不是expressjs的问题。 “data”文件夹没有什么异常——事实上,web 应用程序直接访问其中的文件没有问题。这意味着expressjs 包含静态目录,就像它应该的那样。

真正的问题在于“数据”中另一个特定文件夹的内容。这是返回 307 状态的唯一场景。最后,端口号似乎仍然是一个因素(因为某些其他端口确实可以工作,正如我在原始帖子中所述),但它非常非常奇怪。如果我复制该文件夹并重命名它,则可以很好地访问其内容。我想这就是我现在的解决方案,直到我找到这个问题的真正原因为止。

关于node.js - ExpressJS 无法通过 HTTPS 提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com