问题标签 [pre-signed-url]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-cloud-storage - 通过签名的 url 确定存储桶对象的可用性
我们的下载托管在 Google Cloud Storage 上。一段时间以来,我们一直在按需创建签名 URL(当用户单击下载按钮时),然后将用户重定向到该 URL。
这段代码已经投入生产好几个月了,但最近我们注意到有一个竞争条件:有时 URL 还没有准备好。在此之前,尝试访问签名的 URL 会导致403: Forbidden
.
我们试图通过发送 HEAD 请求来轮询 URL 是否准备好,寻找 200 响应来缓解这种情况。这似乎是一个很好的解决方案,直到我们意识到偶尔存在第三种状态:URL 已创建,但尚未准备好。我们的 HEAD 收到了200 Success
包含以下 XML 文档的响应:
该 URL 将在几秒钟后变为可用。有关创建签名 URL 的文档没有讨论它没有立即准备好的可能性。
我的问题:您应该如何确定新创建的签名 URL 何时可以使用?
编辑
几个月来,我们实际上一直在使用 URL 生成代码(并且运行良好)。直到最近两周,我们才注意到我们使用了备用机制(即 URL 尚未准备好)。这几乎就像谷歌在上个月更改了代码,在 URL 准备好时引入了延迟。直到现在,比赛条件甚至都不明显。
google-cloud-storage - 带有签名网址的 Google 存储
如何mutlipart/formdata ---boundaryString
使用谷歌存储的签名 url上传内容类型的文件?
我面临的问题是当我们使用浏览器上传文件时,浏览器将内容类型放在mutlipart/formdata ---boundaryString
哪里boundaryString
是内容类型标头值的动态部分。
现在由于谷歌签名方法要求内容类型是签名的一部分。生成一个签名的 url 变得不可能了。
java - 为什么 AWS 不信任其自己的 SDK 生成的预签名 URL
我正在编写用于从 AWS S3 下载对象的预签名 URL。我使用 AWS Java SDK 中的 generatePresignedUrl 方法。但是,在使用生成的预签名 URL 发出 GET 请求时,我从 AWS 获得 SignatureDoesNotMatch。我很困惑,因为我使用官方 SDK 中的方法来生成它和一个非常简单的 GET 请求,但没有运气。非常感谢任何帮助!
代码(取自AWS 文档):
我用于连接 AWS S3 的凭据经过测试;我能够使用来自 AWS SDK 的相同凭证和 S3 下载方法下载 S3 对象。但是我从 AWS 获得的对组合 URL 的响应(例如,https://ozland.s3.amazonaws.com/1865b563cdc94fa28ef41ee0b9b0e608?AWSAccessKeyId= ...AWSAccessKeyId...&Expires=1471300223&Signature=pbgcRB0Zg%2B3iicDQQbVX%2FqdNAAc%3D )从上面是:
问题是为什么上面的 response.StringToSign 与 AWS docs ( AWS docs )描述它的方式不同。特别是,根据文档,我希望 StringToSign 像:
aws-tools非常适合我使用完全相同的 S3 存储桶和凭据生成预签名 URL。但是为什么我还是在这里得到 SignatureDoesNotMatch 呢?
谢谢!
amazon-web-services - X-Amz-Expires 是向 AWS 请求的必需标头/参数吗?
如果不需要,签名请求的默认过期值是多少?它是否等于
X-Amz-Expires
参数的最大可能值,即604800(7 天)?文档(请参阅上面的链接)
X-Amz-Expires
仅在查询字符串中传递签名参数的上下文中讨论参数。如果X-Amz-Expires
需要参数,是否只需要在查询字符串中传递签名参数(而不是通过授权标头传递它们)?
更新:
AWS 安全流程简介论文,第 17 页说
请求必须在请求时间戳的 15 分钟内到达 AWS。否则,AWS 会拒绝该请求。
现在我们在这里谈论什么时间戳?我的猜测是X-Amz-Date
。如果我是对的,那么就会出现另一个问题:
X-Amz-Date
和参数如何X-Amz-Expires
相互关联?对我来说,如果不存在,这听起来像是请求过期算法从X-Amz-Date
时间戳回落到 15 分钟。X-Amz-Expire
javascript - Javascript AWS-SDK 为特定 IP 地址生成签名下载 url
目前我正在使用 Javascript AWS-SDK 为 S3 存储桶中的对象生成签名的下载 url,但是我还想通过 ip 地址限制签名的 url。这可能吗?IE 如果用户获得特定文件的signedUrl,他们应该只能在特定IP 上使用该链接。我没有使用云端。
google-cloud-storage - 存储桶中带有子文件夹的 GCS 签名 URL
我有一个带有子文件夹结构的存储桶来添加媒体,例如
bucket/Org1/ ...
bucket/Org2/ ...
,我想为每个子文件夹内的所有媒体生成一个签名的 url,因此属于组织 1 的用户只能查看他们的文件。
当然,我不想为每个文件生成一个签名的 url(可能很多)并且也ACL
不起作用,因为我的用户使用非谷歌帐户登录(并且可以没有)
所以有什么办法可以让like bucket/Org1/*
?
ruby - Aws::S3::Presigner presigned_url 返回 403 禁止使用 virtual_host
我正在尝试在静态网站托管的 S3 存储桶上创建一个私有对象,该存储桶可从签名 URL 访问。看起来很简单,但是使用virtual_host
启用的以下代码似乎总是会导致 403 Forbidden。如果我禁用virtual_host
,那么它会按预期工作。
是否缺少使此工作的权限/设置?
javascript - 如何制作过期/签名视频嵌入网址
我是新手,正在学习网络开发等等。我只知道如何将我的视频嵌入网站,任何菜鸟都可以轻松获得源代码,他们也可以嵌入它。但在许多网站中,视频 src 使用重定向链接进行编码,例如:https ://redirector.googlevideo.com/videoplayback?requiressl=yes&id=0c5d32687bb8e7fd&itag=18&source=webdrive&ttl=transient&app=explorer&ip=2604:a880:0:1010 ::dc7:d001&ipbits=32&expire=1481329545&sparams=requiressl%2Cid%2Citag%2Csource%2Cttl%2Cip%2Cipbits%2Cexpire&signature=8094D8DEF3C98784DC5561980B5725379B61A804.4C63CCB219699C4A2C02FB2606425E50243F8D36&key=ck2&mm=31&mn=sn-ab5l6ne6&ms=au&mt=1481314943&mv=m&nh=IgpwcjA0LmxnYTA3KgkxMjcuMC4wLjE&pl=48
它会在一段时间后到期,在这种情况下是一天。我了解到这是一个签名的网址。
所以,我想知道如何创建这样的签名网址。请不要提供任何插件名称,因为我不是付费用户,也不是我只使用博主的任何东西。我只是想学习如何用 javascript 编写代码。
简而言之,我想说,我嵌入的 youtube 视频的来源是一个签名的 url,它在一小时后过期,并且当网站刷新时,来源应该不断变化。
node.js - Lambda:Amazon s3 直接上传错误签名不匹配
我想使用预签名的 URL 将图像文件上传到 AWS s3 存储桶,但是屏幕截图中显示了一个错误,我已经按照此页面s3 direct file upload的帖子进行操作,我想知道什么我正在犯的错误,我也想知道这是否是服务器端问题,或者我应该使用一些不同的方法来向“预签名”URL 发出 put 请求,谢谢。
我的 serverless.yml
我的处理程序文件
amazon-web-services - 如何使用预签名 URL 在 Amazon S3 中上传文件
在Amazan S3
和许多类似的开源 CDN 服务器中,Minio
有一个功能叫做presigned URL
让没有凭据信息的用户下载/上传文件。但是上传文件有一个小问题。一般情况是:
- 我们将预签名的 URL 传递给客户端
- 客户端将文件上传到 Amazon s3
- 客户端通知服务器文件已上传。
但在那之后,客户端可以上传文件并覆盖它们,直到预签名 URL 的到期时间。因此,在 URL 过期之前,我们不能信任 S3 服务器中的任何文件。这是不可取的!
如何解决这个问题呢?