Java Spring中的Cors
我正在将此添加到我的控制器:Java Spring中的Cors,java,angular,spring,http,Java,Angular,Spring,Http,我正在将此添加到我的控制器: @RestController @CrossOrigin(origins = "*", allowedHeaders = "*") @RequestMapping(value="/api") public class CasaVendaController @DeleteMapping("/casas-venda/{id}") public Boolean deleteCasaVenda(@PathVariable("id")
@RestController
@CrossOrigin(origins = "*", allowedHeaders = "*")
@RequestMapping(value="/api")
public class CasaVendaController
@DeleteMapping("/casas-venda/{id}")
public Boolean deleteCasaVenda(@PathVariable("id") int id){
this.casaVendaRepositorio.deleteById(id);
return true;
}
在我的Web安全配置适配器中,我有:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers("/login",
"/api/corretores").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated().and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
http.addFilterBefore(JwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
当我尝试对执行删除操作时:。浏览器抱怨未启用cors。顺便说一句,我用的是角的。我甚至连选项方法都不懂。下一个bean会帮你很多
@Bean
fun corsFilter(): CorsFilter {
val configuration = CorsConfiguration()
configuration.applyPermitDefaultValues()
val source = UrlBasedCorsConfigurationSource()
source.registerCorsConfiguration("/**", configuration)
return object : CorsFilter(source) {
override fun doFilterInternal(request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain) {
response.apply {
this.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, request.getHeader("Origin") ?: "*")
this.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "POST, PUT, PATCH, GET, OPTIONS, DELETE")
this.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "${HttpHeaders.AUTHORIZATION}, ${HttpHeaders.CONTENT_TYPE}")
}
when (HttpMethod.valueOf(request.method)) {
HttpMethod.OPTIONS -> response.status = HttpStatus.OK.value()
else -> filterChain.doFilter(request, response)
}
}
}
}
事实上,这不是科尔斯。Firefox和Chrome都在控制台上输出cors问题。但实际上是404 我的终点是:
http://localhost:8080/api/casa(s)-venda/52
我通过邮递员发现了这个问题。在《邮递员》中,我获得了404HTTP状态。这很奇怪,;在浏览器上我得到403和邮递员404