问题标签 [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.
php - 使用 PHP 创建签名 URL 以将 POST 表单上传到 Google Cloud Storage
我一直在尝试使用 HTML 表单通过 POST 将文件上传到 GCE,尽管到目前为止我一直收到以下错误消息:
我们计算的请求签名与您提供的签名不匹配。检查您的 Google 密钥和签名方法。
这是我在名为 gcs.php 的文件中的示例代码:
请注意,BUCKET_NAME 和 ACCESS_ID 在我的代码中设置为正确的值,我可以确认这一点,因为我已经能够对指定存储桶中的文件执行 GET。
我一直在寻找解决我这个问题的方法,但到目前为止没有运气,所以我想我会在这里发布我的代码,希望有人能指出我做错了什么。我会很感激我能得到的任何帮助!
amazon-web-services - 从云端获取格式错误的策略错误
我正在尝试为云端创建签名 URL。我遵循了亚马逊的文档,并能够使用控制台配置 cloudfront 和 s3。但问题是当我创建签名的 url(我使用 linux 命令生成了策略和签名)并准备了以下 url http://1q2w3e4r5t6y7u.cloudfront.net/4/myimage.jpg?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kbHIyamJoZGdobTE4LmNsb3VkZnJvbnQubmV0LzQvM2IwYWNiMjYtYTUyOC00MTYwLWE1Y2YtNDEzZWI3NGRkNjcxLmpwZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTQwODczOTQwMH0sfX1dfQ0K&Signature=jOv/hpQSO7ChSYQ3w9k2EVh7MUrBxQ2dqbjQNPuEFcWgCKcBT6BufQoMnGWmVLHnIvFr8/ErQC2Q6iAxTyxHoHN7K9FMB2QmLbqaenKaRh8RIcufTmOlsbWXxMpQTwFOquQX7JE/2i4m6OGZBi4Chwse9fQwzHdQ4A6FPr/r8l0rDHLBXF58z8mq3tqJIqiE3joxJoy2K5dY4tzIXWCGZ25L941O8dkpSrmDbmQii8iGiJUGE0bFICpndlEbDVDUkHZsMSPXYt8fjJ2YTIbL58QtaVLMJeXY0kuDq4IUZ8ryp7BZ1Cqj5RKnkToIO4Qe5fNbfl9g-6nydcUbr6q72g__&Key-Pair-Id=xxxxxxxxxxxxxxxxxxxx
但我不断收到“格式错误的网址”错误。请帮忙!!
java - 如何禁止字符集自动添加到 okhttp 中的 Content-Type
考虑以下代码:
我正在使用以前签名的 URL 从客户端访问 GCS。
问题:似乎 okhttp 还将为正文 [A] 声明的字符集添加到 URL(至少对于 text/plain),即使它没有在 [B] 中声明。这弄乱了我的签名 URL,GCS 返回 403 Forbidden。
- 如果我从 [A] 中删除字符集,它仍然会被添加。
- 如果我在签名之前将字符集添加到签名的 URL,它会起作用并且 GCS 返回 200 OK。
但这不是应该的。至少在使用签名 URL 时,这些 URL 必须完全按照声明的方式发送到服务器。
我尝试使用 Apache http 客户端(我不想在生产中使用它,因为 okhttpclient 已经是我安装的一部分)并且该客户端没有公开此行为:
有没有办法抑制 okhttp 中的行为,它添加到 Content-Type 或在正文中冗余传输 Content-Type?
javascript - 为什么 PUT 不能像宣传的那样在 S3 上使用 AWS PHP
根据本网站和其他来源的示例,我尝试了许多不同的方法,但我遇到了障碍。在一个多月的日常尝试不同的事情后未能使其正常工作后,我使用适用于 aws-php-sdk-2.7.1 的最新版本的 AWS 开发工具包将其缩小到以下范围。你认为它会起作用吗?我正在尝试做的是允许用户使用 javascript 编辑网页,捕获 Div 中的标记并使用 Amazon S3 上的签名 URL 将其放入存储桶。我收到一个错误,表明我的签名方法不正确。我是否得出错误的结论,即 SDK 应该为我完成这项工作,或者我做错了什么。我的密钥和密码在使用带有 PUT 的 JAVA 时工作正常,但我需要一个在客户端工作的解决方案。没有 SDK 的其他方案使用其他方式来签署 URL,但我也无法让这些方式在这里工作……我真的可以使用一些帮助。谢谢你。
这就是我目前所在的位置。
我在桶上的 Cors:////////////////////////////////////// ///////////////
url - 签名的网址 Amazon S3,最短到期时间应该是多少
如果我设置说 1 分钟到期但由于大文件如果无法在到期时间内下载,则下载将在时间到期时中断/取消。
由于某种原因,我需要保持 mim 到期时间。
谢谢您的回复。
ios - 将图像上传到 s3 存储桶,然后在后台将图像的链接上传到我的服务器
我有一个通用的问题,有经验的开发人员在阅读时可能会嘲笑我,但我无法以某种方式处理它。
基本上,我想将图像从文件系统上传到我的 amazon s3 存储桶,然后将这些图像的链接上传到我的服务器。将图像上传到 s3 后,我得到了它们的链接并将它们存储在一个数组中。然后我想将这些链接上传到我的服务器。但是,为了涵盖针对应用程序暂停的上传,我想让这个过程在后台运行。架构如下。
将图片上传到 s3 -> 获取这些图片的 s3 链接 -> 将链接上传到服务器
我正在尝试使用 Amazon SDK 的 presignedURL 实用程序,因为 Amazon 建议将其用于后台上传。
iOS API 文档说 NSURLSessionUploadTask 做了我想做的事情。首先,我无法使用 presignedURL 将图像上传到 s3(我设法使用 TransferManagerUploadRequest 上传)。其次,即使应用程序被挂起,这个进程也应该运行。但实际上我不知道该怎么做。我把我的“上传到 s3”代码放在下面,它现在不起作用。
抱歉这个复杂的问题,它确实表明了我现在的想法。
amazon-web-services - 如何使用预签名 URL 将多个文件上传到 S3 并限制为单个文件夹?
假设您要/upload
使用 Amazon S3 的预签名 URL 将多个文件上传到目录中。
如何使用单个预签名 URL 上传多个文件?
如何限制上传到某个文件夹?
android - 使用从服务器端应用程序生成的签名 URL 从 android 将文件(视频文件)上传到 S3 服务器
我正在尝试使用从服务器端(用 python 编码)应用程序生成的签名 URL 从 android 应用程序将视频文件上传到 S3 服务器中的存储桶。我们正在向签名的 URL 发出 PUT 请求,但我们得到
connection reset by peer exception
.
但是当我在 POSTMAN REST CLIENT 上尝试相同的 URL 时,会收到一条成功消息。任何帮助将不胜感激。
jquery - S3 拒绝带有预签名 URL 的浏览器 PUT - 它认为它们是 GET
我正在尝试使用带有 PUT 方法的预签名 URL 将文件从浏览器(Chrome 版本 41.0)上传到 S3。我在我的服务器上正确生成了预签名的 URL,因为它可以从 CURL 正常工作:
curl -X PUT "Content-Type:" --data "junk" "https://mypresignedurl"
我现在正在尝试使用 jQuery 从浏览器上传:
$.ajax({
url: "https://mypresignedurl",
method: 'PUT', // I've also tried type: 'PUT'
data: "junk",
})
这被 AWS 使用 SignatureDoesNotMatch 代码拒绝。错误指定:
<StringToSign>GET 1427216999 /mybucket/myfile</StringToSign>
但我没有使用 GET - 我使用的是 PUT。如果我检查 Chrome 的网络选项卡,它会正确地将请求列为 PUT。那么为什么 AWS 将浏览器 PUT 请求解释为 GET 并拒绝它们呢?
(这似乎与 CORS 无关。我已经在我的存储桶上设置了 CORS,然后使用 -H "Origin: http://elsewhere.com " 从 CURL 进行测试。我也尝试过传递 "type" “方法”。我尝试过使用 POST 而不是 PUT——即使如此,AWS 仍然将 StringToSign 列为 GET。我尝试了各种 contentTypes。FWIW,我的 presignedURL 上传逻辑在 WPF 应用程序中的 .NET 上都可以正常工作。 )
curl - 上传到预签名的 S3 URL 会从浏览器获取 403,但在 curl 中有效
使用curl
,如果我这样做:
它上传就好了。但是,当我尝试在浏览器中上传时,出现此错误
我Request Headers
的已附上