summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2021-02-07 02:01:37 +1300
committerTom Ryder <tom@sanctum.geek.nz>2021-02-07 02:05:50 +1300
commit6ba517dfd0d85efb30250dcb2bc7e59af1859ffa (patch)
treefcf58e301aa06add756dfa3642384660ade3d221
parentUse CRLF line endings in GET request (diff)
downloadPOE-Component-Client-WebSocket-6ba517dfd0d85efb30250dcb2bc7e59af1859ffa.tar.gz
POE-Component-Client-WebSocket-6ba517dfd0d85efb30250dcb2bc7e59af1859ffa.zip
Switch protocol for Origin header based on TLS
If the websocket server is running over TLS, it's likely that the origin server matching it should be specified as HTTPS.
-rw-r--r--lib/POE/Component/Client/WebSocket.pm5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/POE/Component/Client/WebSocket.pm b/lib/POE/Component/Client/WebSocket.pm
index e428672..8f5ff3c 100644
--- a/lib/POE/Component/Client/WebSocket.pm
+++ b/lib/POE/Component/Client/WebSocket.pm
@@ -132,6 +132,9 @@ sub new {
my $key = "";
for (1..16) { $key .= int(rand(9)) }
+ my $origin = (uc $scheme eq 'WSS' ? 'https' : 'http')
+ . "://$host";
+
$self->{session} = POE::Session->create(
package_states => [
$self => {
@@ -167,7 +170,7 @@ sub new {
port => $port,
},
req => {
- 'origin' => 'http://'.$host,
+ 'origin' => $origin,
'sec-websocket-key' => encode_base64($key),
},
_state => {