diff --git a/rt/rs/security/cors/src/main/java/org/apache/cxf/rs/security/cors/CrossOriginResourceSharingFilter.java b/rt/rs/security/cors/src/main/java/org/apache/cxf/rs/security/cors/CrossOriginResourceSharingFilter.java index 88e856ccf9f..71900f9d54e 100644 --- a/rt/rs/security/cors/src/main/java/org/apache/cxf/rs/security/cors/CrossOriginResourceSharingFilter.java +++ b/rt/rs/security/cors/src/main/java/org/apache/cxf/rs/security/cors/CrossOriginResourceSharingFilter.java @@ -45,6 +45,7 @@ import javax.ws.rs.ext.Provider; import org.apache.cxf.common.util.ReflectionUtil; +import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.impl.MetadataMap; import org.apache.cxf.jaxrs.model.ClassResourceInfo; import org.apache.cxf.jaxrs.model.OperationResourceInfo; @@ -290,8 +291,21 @@ private OperationResourceInfo findPreflightMethod( String httpMethod, MultivaluedMap values, Message m) { - final String contentType = MediaType.WILDCARD; - final MediaType acceptType = MediaType.WILDCARD_TYPE; + Map> protocolHeaders = CastUtils.cast((Map)m.get(Message.PROTOCOL_HEADERS)); + String contentType; + List ctHeaderValues = protocolHeaders.get(Message.CONTENT_TYPE); + if (ctHeaderValues != null && !ctHeaderValues.isEmpty()) { + contentType = ctHeaderValues.get(0); + } else { + contentType = MediaType.WILDCARD; + } + String acceptType; + List acceptHeaderValues = protocolHeaders.get(Message.ACCEPT_CONTENT_TYPE); + if (acceptHeaderValues != null && !acceptHeaderValues.isEmpty()) { + acceptType = acceptHeaderValues.get(0); + } else { + acceptType = MediaType.WILDCARD; + } OperationResourceInfo ori = JAXRSUtils.findTargetMethod(matchedResources, m, httpMethod, values, contentType,