From c35e6aa06261b2630fe3ca9853f0b568bbe7e26c Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Mon, 24 Dec 2018 11:41:10 -0800 Subject: [PATCH] Add "X-CSRFToken" header for new Docker Hub API changes --- push.pl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/push.pl b/push.pl index f3b755d7e64f..2f4f88d54afc 100755 --- a/push.pl +++ b/push.pl @@ -45,10 +45,22 @@ my $token = $login->res->json->{token}; +my $csrf; +for my $cookie (@{ $login->res->cookies }) { + if ($cookie->name eq 'csrftoken') { + $csrf = $cookie->value; + last; + } +} +die 'missing CSRF token' unless defined $csrf; + my $attemptLogin = $ua->post('https://hub.docker.com/attempt-login/' => {} => json => { jwt => $token }); die 'attempt-login failed' unless $attemptLogin->success; -my $authorizationHeader = { Authorization => "JWT $token" }; +my $authorizationHeader = { + Authorization => "JWT $token", + 'X-CSRFToken' => $csrf, +}; my $userData = $ua->get('https://hub.docker.com/v2/user/' => $authorizationHeader); die 'user failed' unless $userData->success;