ExpressJS不发送Access-Control-Allow-Origin标头

时间:2017-02-16 01:15:51

标签: angularjs node.js express typescript

我正在开发一个项目,我需要一个有角度的网络应用程序才能访问基于节点/快速的后端,我正在尝试使用Cors。但是,快速服务器似乎不会发送Access-Control-Allow-Origin标头,我也不知道为什么。我试过创建一个中间件:

this.app.use((request, response, next) => {
    response.header("Access-Control-Allow-Origin", "*");
    next();
}

我还尝试使用setHeader(),header(),set()和append()为每个请求单独执行类似操作,但这些都不起作用。我目前正在使用cors npm包,但这也不能使用以下代码:

this.app.use(cors({
        origin: "http://localhost/4200"
    }));
this.app.options("*", cors({
            origin: "http://localhost/4200"
        })
    );

我已经检查过这些都没有通过邮递员将相关标题添加到响应中。 Express正在添加“错误”标题,用于提供错误的人类可读描述,但不是“Access-Control-Allow-Origin”。

我是用TypeScript写的。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

  1. 您是否检查过根据请求调用了中间件?
  2. 您是否在调用listen之前检查了您的中间件是否已注册?
  3. 如果两者都有保证,则必须有一个原因,具体取决于您的应用程序的其他部分。因此,您应该提供有关文件和目录的引导和结构的更多信息。

答案 2 :(得分:0)

原来问题不在于代码,而在于编译器设置。我删除并重新创建了tsconfig.json文件,它现在可以正常工作。