启用 CORS 时出现 Spring/Angular CORS 问题 [重复]
Posted
技术标签:
【中文标题】启用 CORS 时出现 Spring/Angular CORS 问题 [重复]【英文标题】:Spring/Angular CORS issue while CORS is enabled [duplicate] 【发布时间】:2021-03-15 21:15:48 【问题描述】:我正在使用 Spring 框架开发后端。我的前端是使用 Angular 框架编写的。我的 GET 请求被 CORS 政策阻止。
当我使用以下角度函数向 GET 资源发出请求时:
authenticate(credentials, callback)
const headers = new HttpHeaders(credentials ?
authorization : 'Basic ' + btoa(credentials.username + ':' + credentials.password)
: );
this.http.get("http://localhost:8080/user", headers: headers).subscribe(response =>
console.log(response);
console.log(this.authenticated);
if (response['name'])
this.authenticated = true;
else
this.authenticated = false;
return callback && callback();
);
我在“网络”选项卡中收到失败的请求。根据我的安全配置,我有时也会收到 401,但在这两种情况下,我都会在控制台中收到“被 cors 阻止”消息。
这是请求被发送到的控制器:
@CrossOrigin(origins = "*", allowedHeaders = "*")
@RestController
public class AuthorizationController
@CrossOrigin(origins = "*", allowedHeaders = "*")
@RequestMapping("/user")
public Principal user(Principal user)
System.out.println(user);
return user;
这是我的 Spring 安全配置:
@Override
protected void configure(final HttpSecurity http) throws Exception
http.httpBasic()
.and().authorizeRequests().antMatchers("/**").permitAll()
.anyRequest().authenticated();
注意:这不是我的首选配置。我正在使用它,因为这是我获得工作的唯一方法。使用此配置,我的 POST 请求正在运行。但是,我之前描述的 GET 请求不适用于此配置。
如有任何提示或帮助,我们将不胜感激,如果您需要有关我的代码的更多信息,请告诉我。
【问题讨论】:
【参考方案1】:CORS 在浏览器中工作。用 Postman 做同样的动作,应该会成功(如果 Java 代码正确的话)。
您是否设置并运行了角度 代理?好像不行,直接用域名调用API
查看如何启用和使用代理https://angular.io/guide/build#proxying-to-a-backend-server
【讨论】:
直接调用 API 有什么关系?我以前从未听说过它,我一直在关注的教程是:spring.io/guides/tutorials/spring-security-and-angular-js我不认为他们在那里使用一个?感谢您的帮助。 你直接调用 this.http.get("localhost:8080/user" 并通过代理,你只需要调用 this.http.get("user" 和 proxyConfig (就像在我的教程中一样) ,您的应用程序会看到 /user 转到该 localhost 并且会省略代理 配置代理服务器就可以了。但是我想知道,这在技术上是否也可以通过纯 Spring 安全配置来实现? 正如我所说 - 你做的一切都是正确的,但浏览器会使用 CORS 来保护你,所以这一步是必要的。如果您尝试使用 Postman(google it),它可以在没有 CORS 和代理的情况下工作。另外,谷歌“Chrome中的CORS”,也许他们会给出更详细的解释:) 我明白了,现在更多了,我只是觉得它很模糊,因为我遵循的教程是如此“循序渐进”,以至于我几乎认为它不会跳过这样的内容,谢谢帮助以上是关于启用 CORS 时出现 Spring/Angular CORS 问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
更新文档时出现 XMLHttpRequest 错误,但应启用 CORS