クロスオリジン構成で API を書いています
私のWebセキュリティ構成には
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(Boolean.TRUE);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(someFilter());
registration.addUrlPatterns("/abc/*");
registration.setOrder(1);
return registration;
}
コントローラ クラス
@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping("/gdpr/1.0")
public class AbcController {
@PostMapping("/request")
ReturnStatus saveRequest(HttpServletRequest request,
@RequestParam(value = "requestType", required = true) RequestType requestType,
@RequestParam(value = "Type", required = true) Type Type,
@RequestParam(value = "file", required = true)
MultipartFile uploadedFile) throws InvalidInputException {
}
以下のような私のポストマンからのリクエストをヒットしようとしています
認証フィルターチェック
private static final Pattern HEALTH_CHECK = Pattern.compile("^.+/abc/[\\d]+\\.[\\d]+/?$");
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
StringBuffer requestURL = request.getRequestURL();
if (isHealthCheck(requestURL)) {
filterChain.doFilter(request, response);
return;
}
String source = UNKNOWN;
boolean isHealthCheck(StringBuffer requestURL) {
if (requestURL != null) {
Matcher matcher = HEALTH_CHECK.matcher(requestURL.toString());
return matcher.matches();
}
return false;
}
Matcher.match が常に false になる
私はそこで何かを逃しましたか?
余分なパラメーターを追加しましたか?
迅速な対応を期待しています。