[英]Global CORS configuration not working in Spring Boot
所以我尝试在Spring Boot应用程序中添加全局CORS配置。 当我自动化所有原点时(通过在CorsRegistry.allowedOrigins中添加'*')我可以使它工作但是当我尝试指定http:// localhost:8080例如时,它不起作用。
我的控制器
@RestController
@RequestMapping("/api")
public class Controller {
@GetMapping("/svc")
public ResponseEntity<String> method(@RequestParam(required = false) String id) {
//some code
}
我的配置:
@Configuration
public class Configuration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("http://localhost:8080")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
;
}
};
}
所以这不符合预期。 但是当我放
registry.addMapping("/**").allowedOrigins("*")
它从我的客户端调用http:// localhost:8080 / api / svc?id = 999时有效 。
关于我在这里缺少什么的任何想法?
谢谢!
我认为你有一个复制/过去的问题,我想你的服务器在端口8080上的localhost上运行。你应该知道.allowedOrigins
应该包含客户端来源,所以改变:
registry.addMapping("/**").allowedOrigins("http://localhost:8080")
到registry.addMapping("/**").allowedOrigins("http://localhost:[client_port]")
。
其中client_port是您的客户端端口。
编辑
如果你想获得客户端ip,你可以将HttpServletRequest绑定到你的方法(这只是为了获取客户端地址,一旦完成就可以删除绑定):
@GetMapping("/client/ip")
public ResponseEntity<String> getClientIp(HttpServletRequest request) {
String clientAddress = "";
if (Objects.nonNull(request)) {
clientAddress = request.getHeader("X-FORWARDED-FOR");
if (Objects.nonNull(request) || "".equals(remoteAddr)) {
clientAddress = request.getRemoteAddr();
}
}
return ResponseEntity.ok().body(clientAddress);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.