React应用程序中s3预签名url超时,捕获403错误



我从s3 bucket中获得一个预签名的url,超时时间为15分钟(我知道这可以增加,但出于安全原因,我想避免长时间过期(。

15分钟后,当我尝试使用这个url时,我的react应用控制台中出现了403错误。

我不能用通常的方式捕捉这个错误,因为我实际上并没有调用函数来获取这个错误,当url超时时,它来自aws。

我想调用我的函数,一旦我得到这个403错误,它就会得到签名的url,这样它就会在用户不知情的情况下更新,但我无法捕捉它。

有人对如何处理这个问题有什么建议吗?

我可以使用setTimeout函数在15分钟后获得另一个签名的url,但我想知道是否有更好的方法来处理这个问题。

感谢

这个问题缺乏细节,所以我在这里做一些假设。

你应该反过来做。与其提前获取签名的URL并等待用户执行某些操作来使用它(例如,单击按钮(,不如只在用户单击按钮时生成签名的URL。这样,您就不必担心URL在签名后几秒钟就会被使用。

例如,如果您想在用户单击按钮时打开一个文件,请使用:

button.addEventListener("click", () => {
// get the signed URL
const response = await fetch("<backend url>");
if (!response.ok) {
throw new Error();
}
const url = await response.text();
// use the URL
window.href = url;
}

最新更新