package SockJS::Middleware::JSessionID;
use strict;
use warnings;
use parent 'Plack::Middleware';
use Plack::Util;
sub call {
my $self = shift;
my ($env) = @_;
my $res = $self->app->(@_);
return $res unless $env->{'sockjs.transport'};
return $self->response_cb(
$res => sub {
my $res = shift;
my $h = Plack::Util::headers($res->[1]);
if (my $cookie = $env->{HTTP_COOKIE}) {
if ($cookie =~ m/(?:^|;|\s)JSESSIONID\s*=\s*(.+?)(?:\s|;|$)/) {
$h->push('Set-Cookie' => "JSESSIONID=$1; Path=/");
}
}
elsif ($self->{cookie}) {
$h->push('Set-Cookie' => 'JSESSIONID=dummy; Path=/');
}
}
);
}
1;