@Override public List<String> getRequestHeader(String name) { return acr.getRequestHeader(name); }
private void validateAccessControlRequestHeaders(Set<String> allowedHeaders, ContainerRequest request) throws PreflightFailedException { List<String> requestedHeaders = request.getRequestHeader(ACCESS_CONTROL_REQUEST_HEADERS.value()); requestedHeaders = requestedHeaders != null ? requestedHeaders : Collections.<String>emptyList(); Set<String> flatRequestedHeaders = new HashSet<String>(); for (String requestedHeader : requestedHeaders) { flatRequestedHeaders.addAll(Arrays.asList( requestedHeader.toLowerCase(Locale.US).trim().split("\\s*,\\s*"))); } ImmutableSet<String> allowedHeadersLowerCase = ImmutableSet.copyOf( Iterables.transform(allowedHeaders, new Function<String, String>() { public String apply(String from) { return from.toLowerCase(Locale.US); } }) ); final Set<String> difference = Sets.difference(flatRequestedHeaders, allowedHeadersLowerCase); if (!difference.isEmpty()) { throw new PreflightFailedException( "Unexpected headers in CORS request: " + newArrayList(difference)); } }
@Override public List<String> getRequestHeader(String name) { return acr.getRequestHeader(name); }
@Override public List<String> getRequestHeader(String name) { return acr.getRequestHeader(name); }
@Nullable @Override public List<String> apply(@Nullable ContainerRequest request) { return request == null ? null : request.getRequestHeader(header); } };
import com.sun.jersey.spi.container.ContainerRequest; import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerResponseFilter; import javax.ws.rs.core.HttpHeaders; import java.util.ArrayList; import java.util.List; public class CacheControlCopyFilter implements ContainerResponseFilter @Override public ContainerResponse filter( ContainerRequest containerRequest, ContainerResponse containerResponse ) { if ( containerRequest.getRequestHeader( HttpHeaders.CACHE_CONTROL ) != null ) { List<Object> responseCacheControlValues = new ArrayList<Object>( containerRequest.getRequestHeader( HttpHeaders.CACHE_CONTROL ).size() ); for ( String value : containerRequest.getRequestHeader( HttpHeaders.CACHE_CONTROL ) ) { responseCacheControlValues.add( value ); } containerResponse.getHttpHeaders().put( HttpHeaders.CACHE_CONTROL, responseCacheControlValues ); } return containerResponse; } }
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { if (request.getRequestHeader("X-Mayocat-Full-Context") != null) { response.getHttpHeaders().putSingle("X-Mayocat-Full-Context", true); } return response; } }