node.js - Angular 应用程序运行本地 API 实例时出现 "blocked by CORS policy"错误

标签 node.js angular express cors

我正在针对基于 Node/Express/MongoDB 的 API 的本地实例(我在 http://localhost:4200 运行)测试我们的 Angular 应用程序(在 http://localhost:3000 运行)。

我正在测试的端点之一用于允许我们的内部用户下载文件。现在,在我们实际的 API URL 上,我们设置了 CORS 策略(有关详细信息,请参阅下文) - 这是在 VPN 后面运行的内部办公应用程序。

但是当我尝试在针对 API 本地实例运行的本地应用程序上测试此下载功能时,我收到以下错误消息:

Access to XMLHttpRequest at 'http://localhost:3000/v0/filegenerator/download?emailDocId=47dh385686e780c18e905&apikey=9d98e41d-44e9-4bbb-ab3d-35b7df5272dc&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJDUkVXTWVtYmVyIjoiNWmNoIjoiU2MDc0ODd9.bA5B5bx4wPSSiVCS_LxTK1gifjtif8dj29sfUBHqpOg' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

这里有几个问题:

1.) 这是一般的 Chrome 安全错误消息吗?

2.) 有没有办法可以关闭此功能,以便我可以测试下载文件?或者我只能通过实际的实时 API 来测试它吗?

如何在我的测试环境中最好地解决这个问题?

添加注释:我确实有一个 CORS 扩展 - “Allow-Control-Allow-Origin: * 1.0.3” - 安装在 Chrome 中,当前设置为“启用跨域资源共享”。

此外,在我们的后端 Node/Express 环境中,这是我们当前的设置:

  app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
    return next();
  });

最佳答案

CORS header 基本上是服务器表达“我将这些其他服务器视为向我发送请求的来源,并且对于浏览器来说应该是安全的”的一种方式。如果不存在 header ,则只有来自同一服务器的请求才被认为是安全的。

您应该能够配置本地应用程序以将 header 添加到响应中。

纯文本标题看起来像 访问控制允许来源:本地主机:4200

关于node.js - Angular 应用程序运行本地 API 实例时出现 "blocked by CORS policy"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149987/

相关文章:

javascript - webpack-dev-server 不会自动重新加载和构建 - 配置问题

node.js - Nodejs postgres pg语法错误

node.js - Node Js 响应

javascript - Angular 中的 ng-src 和 ngFor

java - Angular 4.3 HTTPClient 基本授权不起作用

node.js - 如何在无论如何都会被调用的链的末尾添加快速中间件(OK/FAIL 响应)?

node.js - 如何对每个请求执行 Nightmare ?

java - node.js 是否可以导入 java 库

typescript - Multer 处理错误, typescript 类型有问题

angular - 将组件移动到 Angular 中的另一个父组件