javascript - 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;
}
我想不通。在堆栈溢出上尝试了很多东西。对此的任何帮助都将受到高度赞赏。- 斯瓦蒂语
解决方案
在 Angular 6 中为此使用代理技术。您必须在Angular应用程序的根目录中创建一个proxyconfig.json文件。你可以关注这个视频——Angular 6 中的 CORS
或者它也可以在 API 创建期间在后端解决。
推荐阅读
- css - 为什么只有最初活动的 Bootstrap 选项卡才能正确响应窗口大小调整,即使样式在选项卡之间应用一致?
- c++ - C++ 控制台应用程序始终以改写模式运行
- traveling-salesman - ortools TSP中如何让两个节点互斥?
- python - 如何创建一个可以实例化的父类,但它的所有方法都必须在子类中实现?
- html - 浮动跨度溢出到下一个列表项
- git - 卡在 git bash 中,我在写完提交消息后输入了返回键,现在我得到 > 符号并且无法退出正常 $
- javascript - 为什么密码验证不起作用?HTML/JS
- python - 试图用 SELENIUM 继续检查表内的值
- javascript - ChartJs 2 如何在加载时从圆环图中删除数字
- javascript - javascript循环(for语句)在21亿次迭代后变慢?