首页 > 解决方案 > Angular 应用程序中浏览器中的 CORS 错误

问题描述

您好开发者社区,我正在从 Angular 6 客户端访问 RESTful API(用 Spring Hibernate 编写)。当我从本地运行 Angular 层时,我不断收到 CORS 这个错误:

“从源 ' http://localhost:4200 '访问 XMLHttpRequest 在 'http:///SpringDemoSecurity/login'已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP好的状态。” 我在来自 Java 层的响应中添加了 Allow-Access-* 标头,但没有帮助。我可以在邮递员应用程序的响应中看到这些标题。我无法从我的浏览器中摆脱这些错误。

跟踪堆栈溢出和其他地方的许多线程,在请求和响应对象中添加所有标头,并使用 Postman REST 客户端应用程序检查它们的存在,但没有用。Java 层是 AWS EC2 实例,而 Angular 在本地运行。

下面是我的 Filter 类中的 Java 代码片段:

response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Max-Age", "864000");
response.addHeader("Access-Control-Allow-Methods", "GET, OPTIONS, HEAD, PUT, POST, PATCH, DELETE");
response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type,authorization,token");
response.addHeader("Access-Control-Allow-Credentials", "true");
// For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
        if (request.getMethod().equals("OPTIONS")) {
            response.setStatus(HttpServletResponse.SC_ACCEPTED);
            return;
        }

我想不通。在堆栈溢出上尝试了很多东西。对此的任何帮助都将受到高度赞赏。- 斯瓦蒂语

标签: javascriptangularspringjakarta-eecors

解决方案


在 Angular 6 中为此使用代理技术。您必须在Angular应用程序的根目录中创建一个proxyconfig.json文件。你可以关注这个视频——Angular 6 中的 CORS

或者它也可以在 API 创建期间在后端解决。


推荐阅读