Cors Auth Spring Boot
Cors Auth SpringBoot
我正在使用 springboot 和 angular。
尝试使用 JWT 登录,当使用邮递员发送 http 时,请求正常但是当尝试使用 Angular 发送相同的 http 时,我收到下一个错误:
Access to XMLHttpRequest at 'http://localhost:8080/login' from origin
'http://localhost:4200' has been blocked by CORS policy: Response to
preflight request doesn't pass access control check: It does not have
HTTP ok status.
和
zone-evergreen.js:2845 POST http://localhost:8080/login
net::ERR_FAILED
当我发送登录以外的请求时,它们工作正常
我知道需要一个cors所以代码是下一个:
@EnableGlobalMethodSecurity(securedEnabled = true)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().csrf().disable().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
org.springframework.web.cors.CorsConfiguration configuration = new org.springframework.web.cors.CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
configuration.setAllowedMethods(Arrays.asList("*"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
但错误是一样的
您可以在 angular 应用中使用 proxy.conf.json。
这是例子proxy.conf.json
{
"/api/*": {
"target": "http://localhost:8080",
"secure": false,
"logLevel": "debug",
"pathRewrite": {
"^/api" : ""
}
}
}
然后你可以使用 http://localhost:4200/api/path-be
来达到你的 BE
http://localhost:4200
是您的 angular 应用程序。
/api
如果您向 /api/*
发出请求,那么 angular 代理配置将重定向到您在 proxy.conf.json
中定义的 BE
记得将 proxy.conf.json
添加到您的 angular.json
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "angular-hands-on:build",
"proxyConfig": "proxy.conf.json"
},
重新启动您的 angular 应用程序
我正在使用 springboot 和 angular。 尝试使用 JWT 登录,当使用邮递员发送 http 时,请求正常但是当尝试使用 Angular 发送相同的 http 时,我收到下一个错误:
Access to XMLHttpRequest at 'http://localhost:8080/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
和
zone-evergreen.js:2845 POST http://localhost:8080/login net::ERR_FAILED
当我发送登录以外的请求时,它们工作正常 我知道需要一个cors所以代码是下一个:
@EnableGlobalMethodSecurity(securedEnabled = true)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().csrf().disable().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
org.springframework.web.cors.CorsConfiguration configuration = new org.springframework.web.cors.CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
configuration.setAllowedMethods(Arrays.asList("*"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
但错误是一样的
您可以在 angular 应用中使用 proxy.conf.json。
这是例子proxy.conf.json
{
"/api/*": {
"target": "http://localhost:8080",
"secure": false,
"logLevel": "debug",
"pathRewrite": {
"^/api" : ""
}
}
}
然后你可以使用 http://localhost:4200/api/path-be
http://localhost:4200
是您的 angular 应用程序。
/api
如果您向 /api/*
发出请求,那么 angular 代理配置将重定向到您在 proxy.conf.json
记得将 proxy.conf.json
添加到您的 angular.json
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "angular-hands-on:build",
"proxyConfig": "proxy.conf.json"
},
重新启动您的 angular 应用程序