From 304db4a90834dad12be0b7524971233b8ec3d215 Mon Sep 17 00:00:00 2001 From: lewzylu Date: Thu, 28 Nov 2019 19:55:43 +0800 Subject: [PATCH] fix bug of ip-port --- src/Qcloud/Cos/Client.php | 2 +- src/Qcloud/Cos/CosTransformer.php | 9 +++++++-- src/Qcloud/Cos/Signature.php | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Qcloud/Cos/Client.php b/src/Qcloud/Cos/Client.php index 5a771dab..d3d08aa9 100644 --- a/src/Qcloud/Cos/Client.php +++ b/src/Qcloud/Cos/Client.php @@ -110,7 +110,7 @@ public function responseToResultTransformer(ResponseInterface $response, Request if ($command['Bucket'] != null && $response['Bucket'] == null) { $response['Bucket'] = $command['Bucket']; } - $response['Location'] = $request->getUri()->getHost() . $request->getUri()->getPath(); + $response['Location'] = $request->getHeader("Host")[0] . $request->getUri()->getPath(); return $response; } diff --git a/src/Qcloud/Cos/CosTransformer.php b/src/Qcloud/Cos/CosTransformer.php index c4994a55..a2ecba10 100644 --- a/src/Qcloud/Cos/CosTransformer.php +++ b/src/Qcloud/Cos/CosTransformer.php @@ -57,13 +57,16 @@ public function bucketStyleTransformer(CommandInterface $command, RequestInterfa } } - $host = $bucketname. '.cos.' . $this->config['region'] . '.' . $this->config['endpoint']; + $origin_host = $bucketname. '.cos.' . $this->config['region'] . '.' . $this->config['endpoint']; + $host = $origin_host; if ($this->config['ip'] != null) { $host = $this->config['ip']; if ($this->config['port'] != null) { $host = $this->config['ip'] . ":" . $this->config['port']; } } + + $path = $this->config['schema'].'://'. $host . $uri; $uri = new Uri($path); $query = $request->getUri()->getQuery(); @@ -71,7 +74,9 @@ public function bucketStyleTransformer(CommandInterface $command, RequestInterfa $query = $uri->getQuery() . "&" . $request->getUri()->getQuery(); } $uri = $uri->withQuery($query); - return $request->withUri($uri); + $request = $request->withUri($uri); + $request = $request->withHeader('Host', $origin_host); + return $request; } // format upload body diff --git a/src/Qcloud/Cos/Signature.php b/src/Qcloud/Cos/Signature.php index 3b70dd83..20ae509e 100644 --- a/src/Qcloud/Cos/Signature.php +++ b/src/Qcloud/Cos/Signature.php @@ -21,7 +21,7 @@ public function signRequest(RequestInterface $request) { public function createAuthorization(RequestInterface $request, $expires = "+30 minutes") { $signTime = (string)(time() - 60) . ';' . (string)(strtotime($expires)); $httpString = strtolower($request->getMethod()) . "\n" . urldecode($request->getUri()->getPath()) . - "\n\nhost=" . $request->getUri()->getHost() . "\n"; + "\n\nhost=" . $request->getHeader("Host")[0]. "\n"; $sha1edHttpString = sha1($httpString); $stringToSign = "sha1\n$signTime\n$sha1edHttpString\n"; $signKey = hash_hmac('sha1', $signTime, $this->secretKey);