Преглед на файлове

Add "X-CSRFToken" header for new Docker Hub API changes

Tianon Gravi преди 6 години
родител
ревизия
c35e6aa062
променени са 1 файла, в които са добавени 13 реда и са изтрити 1 реда
  1. 13 1
      push.pl

+ 13 - 1
push.pl

@@ -45,10 +45,22 @@ die 'login failed' unless $login->success;
 
 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;