ExpressJS无法通过HTTPS提供静态文件

时间:2015-01-18 00:17:11

标签: node.js express https

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

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

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

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

在控制台中,我的状态代码为307 Internal Redirect,在Response Headers下面的Non-Authoritative Reason旁边显示“Delegate”。实际上,如果我单击“预览”或“响应”选项卡(顺便说一下,这一切都在Chrome中),则表示“无法加载响应数据”。问题是什么?

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

总结到目前为止的结果:

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

有人知道发生了什么吗?

2 个答案:

答案 0 :(得分:0)

经过广泛的测试,我得出结论,这可能是一个非常特定于我自己的情况的问题,而不是表达。 "数据"没有什么不寻常的。文件夹 - 实际上,webapp在其中直接访问文件没有问题。这意味着expressjs包含静态目录就像它应该的那样。

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

答案 1 :(得分:0)

我最近也遇到了这个问题,在我的情况下, ad-blocker 阻止了我的所有模拟广告牌和模拟mpu广告图片(因为它们具有特定的尺寸)这是从快递服务。

在Firefox中运行未安装广告块扩展程序的同一页面后找到它。

相关问题