diff --git a/server-data-store/src/main/java/ch/ethz/sis/afsserver/http/impl/NettyHttpHandler.java b/server-data-store/src/main/java/ch/ethz/sis/afsserver/http/impl/NettyHttpHandler.java index 21eeb2e2663c3b881c7ade028b6b664bc3ad36d3..58131a85b086f52d983868db0967c82507397851 100644 --- a/server-data-store/src/main/java/ch/ethz/sis/afsserver/http/impl/NettyHttpHandler.java +++ b/server-data-store/src/main/java/ch/ethz/sis/afsserver/http/impl/NettyHttpHandler.java @@ -67,8 +67,22 @@ public class NettyHttpHandler extends ChannelInboundHandlerAdapter { if (OPTIONS.equals(request.method())) { + final String requestMethod = request.headers().get(HttpHeaderNames.ACCESS_CONTROL_REQUEST_METHOD); + + final HttpResponseStatus responseStatus; + if (requestMethod == null) + { + responseStatus = HttpResponseStatus.BAD_REQUEST; + } else if (!allowedMethods.contains(HttpMethod.valueOf(requestMethod))) + { + responseStatus = HttpResponseStatus.METHOD_NOT_ALLOWED; + } else + { + responseStatus = HttpResponseStatus.OK; + } + final FullHttpResponse response = getHttpResponse( - HttpResponseStatus.OK, + responseStatus, HttpResponse.CONTENT_TYPE_TEXT, new EmptyByteBuf(ByteBufAllocator.DEFAULT), 0);