📌  相关文章
📜  起源'http:localhost:4200'已被CORS策略阻止-无论(1)

📅  最后修改于: 2023-12-03 15:28:14.100000             🧑  作者: Mango

介绍

你好,这里是关于 CORS 策略阻止你的 Web 应用程序访问起源为 http://localhost:4200 的资源的解决方案的介绍。

首先,CORS 的全称是跨域资源共享 (Cross-Origin Resource Sharing),是由浏览器实现的一种安全策略,用于防止跨域攻击。也就是说,如果你的应用程序或者页面在访问其他域的资源时,必须经过该域允许才能成功访问。

而当你的 Web 应用程序访问起源为 http://localhost:4200 的资源时,由于它与当前域不同,且该起源没有允许你的域访问其资源,因此浏览器会拦截该请求,从而导致你遇到了这个问题。

那么,该如何解决这个问题呢?下面为你提供两种常见的方法。

解决方案
方案一:后端配置允许跨域

如果你是后端开发者,可以在你的服务器端进行配置,让该起源允许你的域访问它的资源。

以 Node.js 为例,你可以使用 cors 模块来实现跨域资源共享。

const express = require('express');
const cors = require('cors');

const app = express();

app.use(cors({
  origin: 'http://localhost:4200'
}));

// 其他路由和中间件

这样,当你的应用程序访问起源为 http://localhost:4200 的资源时,即可成功访问。

方案二:前端通过代理服务器访问资源

如果你是前端开发者,可以通过代理服务器来访问该起源的资源。

以 Angular 为例,你可以在 angular.json 中配置 proxy 选项:

"serve": {
  "builder": "@angular-devkit/build-angular:dev-server",
  "options": {
    "browserTarget": "your-app:build",
    "proxyConfig": "src/proxy.conf.json"
  }
}

然后,你需要在 src/proxy.conf.json 文件中进行配置。例如,你可以将请求代理到 http://localhost:3000

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "pathRewrite": {
      "^/api": ""
    }
  }
}

这样,当你的应用程序访问 /api 路径时,就会被代理到 http://localhost:3000,从而成功访问该起源的资源。

总结

以上就是关于 CORS 策略阻止你的 Web 应用程序访问起源为 http://localhost:4200 的资源的解决方案的介绍。希望能对你有所帮助。