2

我在端口 3000 上运行一个带有 express 的服务器,在端口 4200 上运行一个带有 angular 7 的客户端。一旦我提出请求,我就会遇到 CORS 问题。

从源“ http://localhost:4200 ”访问“ http://localhost:3000/drug ”处的 XMLHttpRequest已被 CORS 策略阻止:请求的资源上不存在“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();
    });
4

2 回答 2

5

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

于 2018-11-13T03:06:21.743 回答
0

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

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

之后,您应该编辑方法Configure。在调用之前添加下一行UseMvc

app.UseCors("CorsPolicy");

就这样。我希望这个答案对某人有所帮助。

于 2019-04-21T12:37:28.807 回答