没有“ Access-Control-Allow-Origin”标头存在。.角度7,表示

时间:2018-11-13 01:17:09

标签: node.js express angular7 cross-origin-read-blocking

我正在运行一个服务器,该服务器的Express端口为3000,一个客户端的角度为7,端口为4200。提出请求后,便遇到了CORS问题。

CORS策略已阻止从来源“ http://localhost:3000/drug”访问“ http://localhost:4200”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

我已经在线尝试了所有解决方案,例如使用cors软件包,并在路由器之前设置了中间件,如以下代码(Angular 6 - No 'Access-Control-Allow-Origin' header is present on the requested resource)。但是它仍然没有解决,并不断出现同样的错误。有人会遇到无法用所有解决方案解决CORS的问题吗?请你帮助我好吗?

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
  res.header(
    "Access-Control-Allow-Header",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  next();
});

app.use((req, res, next) => {
      res.header("Access-Control-Allow-Origin", "http://localhost:4200");
      res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
      res.header(
        "Access-Control-Allow-Header",
        "Origin, X-Requested-With, Content-Type, Accept"
      );
      next();
    });

2 个答案:

答案 0 :(得分:3)

将这行代码app.use(cors());放在路由代码之前。 (假设您已经安装了cors软件包)。

答案 1 :(得分:0)

我认为答案会太迟了,但对于将来的某人:
您必须在服务器端将其打开。 我是.Net开发人员,因此我将在.Net核心应用程序示例中进行演示。 在启动文件方法ConfigureServices中,您应该添加下一个代码

services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder.WithOrigins("http://localhost:4200")
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });

此后,您应该编辑方法Configure。在呼叫UseMvc

之前添加下一行
app.UseCors("CorsPolicy");

仅此而已。我希望这个答案对某人有帮助。