Allowing a user to resume a download from a different signed s3 link that has the same ETag as a partially...












0















I'm not sure if this is possible, but basically I have a web application that allows users to download large single files through their browser by clicking a UI element that redirects them to a pre-signed S3 url. The download will then be mediated between the user's browser and S3. The issue with this process is that the downloads can be quite large (on the order of hundreds of GB), so an interrupted connection can be problematic. When the user tries to resume, the signed link we redirected their browser to is probably expired. I'd like to avoid just increasing the expiration date of the signed url out of security concerns, so I've been researching how to support a resumable download. The use case from the mozilla documentation on conditional requests is almost exactly what I need, the road block I'm running into is how to check if the download has been previously started on the client side. I'd like the users to be able to click the button that redirects them to the S3 link and have that check if there are any partially complete downloads (and know how many bytes have been downloaded), then just send the HTTP request with the If-Range header to restart the download in the browser from a different S3 link (with the same ETag value). Is there an api somewhere or an example of some Javascript that allows the browser to mediate such a request?










share|improve this question



























    0















    I'm not sure if this is possible, but basically I have a web application that allows users to download large single files through their browser by clicking a UI element that redirects them to a pre-signed S3 url. The download will then be mediated between the user's browser and S3. The issue with this process is that the downloads can be quite large (on the order of hundreds of GB), so an interrupted connection can be problematic. When the user tries to resume, the signed link we redirected their browser to is probably expired. I'd like to avoid just increasing the expiration date of the signed url out of security concerns, so I've been researching how to support a resumable download. The use case from the mozilla documentation on conditional requests is almost exactly what I need, the road block I'm running into is how to check if the download has been previously started on the client side. I'd like the users to be able to click the button that redirects them to the S3 link and have that check if there are any partially complete downloads (and know how many bytes have been downloaded), then just send the HTTP request with the If-Range header to restart the download in the browser from a different S3 link (with the same ETag value). Is there an api somewhere or an example of some Javascript that allows the browser to mediate such a request?










    share|improve this question

























      0












      0








      0








      I'm not sure if this is possible, but basically I have a web application that allows users to download large single files through their browser by clicking a UI element that redirects them to a pre-signed S3 url. The download will then be mediated between the user's browser and S3. The issue with this process is that the downloads can be quite large (on the order of hundreds of GB), so an interrupted connection can be problematic. When the user tries to resume, the signed link we redirected their browser to is probably expired. I'd like to avoid just increasing the expiration date of the signed url out of security concerns, so I've been researching how to support a resumable download. The use case from the mozilla documentation on conditional requests is almost exactly what I need, the road block I'm running into is how to check if the download has been previously started on the client side. I'd like the users to be able to click the button that redirects them to the S3 link and have that check if there are any partially complete downloads (and know how many bytes have been downloaded), then just send the HTTP request with the If-Range header to restart the download in the browser from a different S3 link (with the same ETag value). Is there an api somewhere or an example of some Javascript that allows the browser to mediate such a request?










      share|improve this question














      I'm not sure if this is possible, but basically I have a web application that allows users to download large single files through their browser by clicking a UI element that redirects them to a pre-signed S3 url. The download will then be mediated between the user's browser and S3. The issue with this process is that the downloads can be quite large (on the order of hundreds of GB), so an interrupted connection can be problematic. When the user tries to resume, the signed link we redirected their browser to is probably expired. I'd like to avoid just increasing the expiration date of the signed url out of security concerns, so I've been researching how to support a resumable download. The use case from the mozilla documentation on conditional requests is almost exactly what I need, the road block I'm running into is how to check if the download has been previously started on the client side. I'd like the users to be able to click the button that redirects them to the S3 link and have that check if there are any partially complete downloads (and know how many bytes have been downloaded), then just send the HTTP request with the If-Range header to restart the download in the browser from a different S3 link (with the same ETag value). Is there an api somewhere or an example of some Javascript that allows the browser to mediate such a request?







      javascript amazon-s3 download http-headers etag






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 13 '18 at 6:49









      JustaDevJustaDev

      12




      12
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53275317%2fallowing-a-user-to-resume-a-download-from-a-different-signed-s3-link-that-has-th%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53275317%2fallowing-a-user-to-resume-a-download-from-a-different-signed-s3-link-that-has-th%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Florida Star v. B. J. F.

          Error while running script in elastic search , gateway timeout

          Adding quotations to stringified JSON object values