diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java index 97750befeb3..987374ca639 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java @@ -102,6 +102,8 @@ public final class WebSocketModule extends NativeWebSocketModuleSpec { builder.addHeader("Cookie", cookie); } + boolean hasOriginHeader = false; + if (options != null && options.hasKey("headers") && options.getType("headers").equals(ReadableType.Map)) { @@ -109,19 +111,20 @@ public final class WebSocketModule extends NativeWebSocketModuleSpec { ReadableMap headers = options.getMap("headers"); ReadableMapKeySetIterator iterator = headers.keySetIterator(); - if (!headers.hasKey("origin")) { - builder.addHeader("origin", getDefaultOrigin(url)); - } - while (iterator.hasNextKey()) { String key = iterator.nextKey(); if (ReadableType.String.equals(headers.getType(key))) { + if (key.equalsIgnoreCase("origin")) { + hasOriginHeader = true; + } builder.addHeader(key, headers.getString(key)); } else { FLog.w(ReactConstants.TAG, "Ignoring: requested " + key + ", value not a string"); } } - } else { + } + + if (!hasOriginHeader) { builder.addHeader("origin", getDefaultOrigin(url)); }