소스 검색

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;