У меня есть внутренний сервер, созданный на Java с Spring Boot, Security и Web, и клиент, созданный с Angular.
В настоящее время я пытаюсь сделать простой запрос в localhost:8080/resource
.
* 1005.* Контроллер для этого адреса показан ниже:
@RestController
public class IndexController {
@CrossOrigin
@RequestMapping("/resource")
public Map<String, Object> home() {
Map<String, Object> model = new HashMap<String, Object>();
model.put("id", UUID.randomUUID().toString());
model.put("content", "Hello World");
return model;
}
}
А угловой клиент (часть, выполняющая запрос) таков:
import { Component } from "@angular/core";
import { HttpClient } from "@angular/common/http";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
public title = "Security Client";
public greeting = {};
constructor(private http: HttpClient) {
http.get("http://localhost:8080/resource").subscribe(data => this.greeting = data);
}
}
Проблема с использованием только того, что былопоказано, что я получаю ошибку CORS.
Независимо от того, удаляется ли Spring Security из моего pom.xml
или добавляется эта конфигурация:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/resource").permitAll();
}
}
Решает проблему.
Что яхочу знать, почему я получаю ошибку CORS вместо 401 Unauthorized при доступе к адресу, который требует аутентификации пользователя.