diff --git a/exec/websocketservice.js b/exec/websocketservice.js
index 00265de4c2b5a2bfbb198649d9817d5be2cd2cc2..4f991ffc10e1cdc9e0c25b3d34b68719988ccb3a 100644
--- a/exec/websocketservice.js
+++ b/exec/websocketservice.js
@@ -449,51 +449,53 @@ function ShakeHands() {
 						break;
 			    }
 				break;
-            } else if (InLine.indexOf("Connection:") === 0) {
+            } else if (InLine.search(/^Connection:/i) === 0) {
                 // Example: "Connection: Upgrade"
                 FWebSocketHeader['Connection'] = InLine.replace(/Connection:\s?/i, "");
-            } else if (InLine.indexOf("GET") === 0) {
+            } else if (InLine.search(/^GET/i) === 0) {
                 // Example: "GET /demo HTTP/1.1"
                 var GET = InLine.split(" ");
                 FWebSocketHeader['Path'] = GET[1];
-            } else if (InLine.indexOf("Host:") === 0) {
+            } else if (InLine.search(/^Host:/i) === 0) {
                 // Example: "Host: example.com"
                 FWebSocketHeader['Host'] = InLine.replace(/Host:\s?/i, "");
-            } else if (InLine.indexOf("Origin:") === 0) {
+            } else if (InLine.search(/^Origin:/i) === 0) {
                 // Example: "Origin: http://example.com"
                 FWebSocketHeader['Origin'] = InLine.replace(/Origin:\s?/i, "");
-            } else if (InLine.indexOf("Sec-WebSocket-Key:") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Key:/i) === 0) {
                 // Example: "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ=="
                 FWebSocketHeader['Key'] = InLine.replace(/Sec-WebSocket-Key:\s?/i, "");
-            } else if (InLine.indexOf("Sec-WebSocket-Key1:") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Key1:/i) === 0) {
                 // Example: "Sec-WebSocket-Key1: 4 @1  46546xW%0l 1 5"
                 FWebSocketHeader['Key1'] = CalculateWebSocketKey(InLine.replace(/Sec-WebSocket-Key1:\s?/i, ""));
-            } else if (InLine.indexOf("Sec-WebSocket-Key2:") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Key2:/i) === 0) {
                 // Example: "Sec-WebSocket-Key2: 12998 5 Y3 1  .P00"
                 FWebSocketHeader['Key2'] = CalculateWebSocketKey(InLine.replace(/Sec-WebSocket-Key2:\s?/i, ""));
-            } else if (InLine.indexOf("Sec-WebSocket-Origin:") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Origin:/i) === 0) {
                 // Example: "Sec-WebSocket-Origin: http://example.com"
                 FWebSocketHeader['Origin'] = InLine.replace(/Sec-WebSocket-Origin:\s?/i, "");
-            } else if (InLine.indexOf("Sec-WebSocket-Protocol:") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Protocol:/i) === 0) {
                 // Example: "Sec-WebSocket-Protocol: sample"
                 FWebSocketHeader['SubProtocol'] = InLine.replace(/Sec-WebSocket-Protocol:\s?/i, "");
-            } else if (InLine.indexOf("Sec-WebSocket-Draft") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Draft/i) === 0) {
 				// Example: "Sec-WebSocket-Draft: 2"
                 try {
                     FWebSocketHeader['Version'] = parseInt(InLine.replace(/Sec-WebSocket-Draft:\s?/i, ""));
                 } catch (err) {
                     FWebSocketHeader['Version'] = 0;
                 }
-            } else if (InLine.indexOf("Sec-WebSocket-Version") === 0) {
+            } else if (InLine.search(/^Sec-WebSocket-Version/i) === 0) {
 				// Example: "Sec-WebSocket-Version: 8"
                 try {
                     FWebSocketHeader['Version'] = parseInt(InLine.replace(/Sec-WebSocket-Version:\s?/i, ""));
                 } catch (err) {
                     FWebSocketHeader['Version'] = 0;
                 }
-            } else if (InLine.indexOf("Upgrade:") === 0) {
+            } else if (InLine.search(/^Upgrade:/i) === 0) {
 				// Example: "Upgrade: websocket"
 				FWebSocketHeader['Upgrade'] = InLine.replace(/Upgrade:\s?/i, "");
+			} else if (InLine.search(/^X-Forwarded-For/i) === 0) {
+				FWebSocketHeader['X-Forwarded-For'] = InLine.replace(/X-Forwarded-For:\s?/i, "");
 			}
         }
     } catch (err) {