java - 使用跨域时连接被拒绝
问题描述
我正在使用 Angular 和 spring-boot。当我想在本地主机之外调用 api 时,我给了我一个连接被拒绝的错误。
角服务:
export class ProfileService {
private baseUrl = 'http://localhost:8090/users';
constructor(private http: HttpClient) {
}
getProfile(id: number): Observable<Object> {
return this.http.get(`${this.baseUrl}` + '/load/' + `${id}`);
}
弹簧启动应用程序:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.setAllowedOrigins(Collections.singletonList("*"));
config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH"));
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
从 angular 获取请求的用户控制器:
@RestController
@RequestMapping("/users")
public class UsersController {
@Autowired
private IUsersService iUsersService;
@GetMapping("/list/grid")
public Iterable<UsersViewModel> getAllEmployees() {
return Dozer.mapList(iUsersService.getAll(), UsersViewModel.class);
}
@GetMapping("/load/{id}")
public UsersViewModel getUserById(@PathVariable(value = "id") Long userId){
return Dozer.mapClass(iUsersService.findById(userId).get(),UsersViewModel.class);
}
}
解决方案
请将此更改为config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
至
config.setAllowedHeaders(Arrays.asList("*"));
推荐阅读
- selenium - 读取 HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken 失败:系统找不到指定的文件。(0x2)
- database - 如何在 oracle 数据库中创建表并使用 python sqlalchemy 将数据插入其中?
- ios - 使用共享的 Instace 方法禁用 UIButton
- laravel - Laravel 插件开发
- .net - 查找重复项的更好方法
- java - 如何将方法的字符串参数更改为未知的类类型
- ios - 用于 iOS 应用的具有多个捆绑标识符的 URL 类型
- html - 旋转木马引导倒置
- ios - 1 px 边框 UIBezierPath(roundedRect:byRoundingCorners:)
- delphi - Delphi:线程的变量数组不执行数组的所有索引