From e8c51cd934dade53a1557050ac5157e49235871b Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 19 Aug 2014 14:21:32 -0700 Subject: [PATCH] Fix external redirect flagging issue with image thumbnails Summary: Fixes T5894. This needs some improvement when we lay in real CDN stuff, but should get all the cases right for now. Test Plan: Thumbnails work properly again. Reviewers: btrahan, chad Reviewed By: chad Subscribers: epriestley Maniphest Tasks: T5894 Differential Revision: https://secure.phabricator.com/D10299 --- .../PhabricatorFileTransformController.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/applications/files/controller/PhabricatorFileTransformController.php b/src/applications/files/controller/PhabricatorFileTransformController.php index 51b5773bde..fc2f522e06 100644 --- a/src/applications/files/controller/PhabricatorFileTransformController.php +++ b/src/applications/files/controller/PhabricatorFileTransformController.php @@ -149,7 +149,21 @@ final class PhabricatorFileTransformController // TODO: We could just delegate to the file view controller instead, // which would save the client a roundtrip, but is slightly more complex. $uri = $file->getBestURI(); - return id(new AphrontRedirectResponse())->setURI($uri); + + // TODO: This is a bit iffy. Sometimes, getBestURI() returns a CDN URI + // (if the file is a viewable image) and sometimes a local URI (if not). + // For now, just detect which one we got and configure the response + // appropriately. In the long run, if this endpoint is served from a CDN + // domain, we can't issue a local redirect to an info URI (which is not + // present on the CDN domain). We probably never actually issue local + // redirects here anyway, since we only ever transform viewable images + // right now. + + $is_external = strlen(id(new PhutilURI($uri))->getDomain()); + + return id(new AphrontRedirectResponse()) + ->setIsExternal($is_external) + ->setURI($uri); } private function executePreviewTransform(PhabricatorFile $file, $size) {