首页 > 解决方案 > 如何轮询签名的网址?

问题描述

我需要使用 javascript 轮询图像,并在找到图像后执行操作。这是我正在使用的代码:

    pollUpload(file) {
        const stopTime = Number(new Date()) + (1000 * 60)
        const check = (resolve, reject) => {
            setTimeout(() => {
                const img = new Image()
                img.onload = resolve
                img.onerror = () => {
                    if (Number(new Date()) < stopTime) check(resolve, reject)
                    else reject(new Error('Timed out'))
                }
                img.src = file
            }, 1000)
        }
        return new Promise(check)           
    },

这可行,但我遇到了一个问题,即在第一个 GET(即 404)之后,响应被缓存,并且后续请求不会每次都被发送。所以它可能需要一段时间才能起作用。

对此的标准解决方案只是将时间戳附加到查询字符串。但是,这是我的麻烦:这些图像是使用 aws 签名的 url 保护的。因此 url 需要与 aws 生成的表单完全匹配,并且不能附加任何随机信息。

在这种情况下,还有其他推荐的方法来防止损坏的 url 被缓存吗?

标签: javascriptamazon-web-servicespolling

解决方案


推荐阅读