打开S3预签名URL,window.location不起作用

时间:2018-02-08 19:30:02

标签: reactjs internet-explorer amazon-s3 microsoft-edge

我正在尝试在我的反应应用程序中显示来自AWS S3预签名URL的图像或文档。以下是我的代码。

this.props.getS3SignedURL(key).then(url=> {
    this.setState({ isLoading: false, error: "", url: url});
    window.location = url;
}, err => {
    //err
});

它在Google Chrome中没有任何问题,它会显示文档。但在Microsoft Edge和IE中,位置不会改变。

我尝试使用encodeURI(),encodeURIComponent()和window.location.href所有组合。但无法让它在Edge和IE中运行。我尝试使用谷歌文档查看器here。它仍然不起作用,我怀疑我是否可以使用Google文档查看器,因为来自网址的文档可以是image / pdf / xls等。

1 个答案:

答案 0 :(得分:0)

根据您对未处理承诺拒绝的评论,我推荐的一件事是尝试更常见的处理承诺错误的方法,如下所示:

this.props.getS3SignedURL(key)
  .then(url => {
    this.setState({ isLoading: false, error: "", url: url });
    window.location = url;
  })
  .catch(err => {
    console.log(err);
  });

除此之外,您可能需要检查它不是SOP问题或CORS问题。