【问题标题】:setHeader does nothingsetHeader 什么都不做
【发布时间】:2022-01-31 08:52:00
【问题描述】:

我正在制作一个小的 node.js Web 应用程序,其中显然需要加载样式和脚本,这就是我为其中一个脚本所拥有的:

const express = require("express");
const app = express();

app.get("/home.js", (req, res) => {
    readFile("./Scripts/home.js", (err, js) => {
        if (err) {
            res.status(500).send("We might have a problem here");
            console.log(err);
        }
        res.setHeader("Content-Type", "text/javascript; charset=utf-8")
        res.send(js);
    });
});
app.listen(process.env.PORT || 3000, () => console.log("App available on http://localhost:3000"));

如您所见,我将内容类型设置为text/javascript; charset=utf-8。但是当我在firefox的html页面中请求脚本时,它有一个application/octet-stream content-type,这是firefox不知道文件类型时的默认值。

如何确保将其设置为text/javascript

编辑:我可以通过将状态设置为 200 来解决此问题,但图像仍然存在此问题:ìmage/png,知道吗?

【问题讨论】:

  • 尝试使用 Content-Type application/javascript 设置标题
  • 我在一个 mozilla 页面上找到了text/javascript,但是现在当我查看 iana.org 时,它确实是 application/javascript。天呐! png 被列为image/png,但知道是什么原因导致它显示为application/octet-stream
  • 您应该 return 或以其他方式在您的 if (err) { ... } 块内停止执行。
  • 为什么要手动处理这样的静态文件?只需使用app.use(express.static("./Scripts"))。见Serving static files in Express

标签: node.js express http


【解决方案1】:

尝试将 text/javascript 替换为 application/javascript

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2019-03-08
  • 2016-12-24
  • 2017-04-18
  • 2011-08-03
  • 2014-05-11
  • 2014-09-10
  • 1970-01-01
  • 2023-03-29
  • 2013-09-28
相关资源
最近更新 更多