Elek, Marton created ZEPPELIN-2468: -------------------------------------- Summary: Enable websocket queries without Origin if zeppelin.server.allowed.origins is * Key: ZEPPELIN-2468 URL: https://issues.apache.org/jira/browse/ZEPPELIN-2468 Project: Zeppelin Issue Type: Bug Affects Versions: 0.7.1 Reporter: Elek, Marton Assignee: Elek, Marton
With ZEPPELIN-2288 we restored the check of the Origin field for websocket requests. Unfortunately the current implementation will deny the request if the Origin HTTP header is empty, even if the zeppelin.server.allowed.origins is *. {code} public static Boolean isValidOrigin(String sourceHost, ZeppelinConfiguration conf) throws UnknownHostException, URISyntaxException { if (sourceHost == null || sourceHost.isEmpty()) { return false; } String sourceUriHost = new URI(sourceHost).getHost(); sourceUriHost = (sourceUriHost == null) ? "" : sourceUriHost.toLowerCase(); sourceUriHost = sourceUriHost.toLowerCase(); String currentHost = InetAddress.getLocalHost().getHostName().toLowerCase(); return conf.getAllowedOrigins().contains("*") || currentHost.equals(sourceUriHost) || "localhost".equals(sourceUriHost) || conf.getAllowedOrigins().contains(sourceHost); } {code} It could be a problem behind a reverse proxy which is not forwarding the Origin (for example currently it couldn't work with Apache Knox). My suggestion is to accept the request if 1. the zeppelin.server.allowed.origins = * AND 2. the Origin header is missing. -- This message was sent by Atlassian JIRA (v6.3.15#6346)