Gee*_*cks 3 javascript rest amazon-s3
我正在尝试使用AWS API从私有S3存储桶中获取JavaScript文件.该指南在此处:签署和验证REST请求
环境是一个带有jQuery的浏览器,所以这是一个JavaScript实现.我已经完成了我认为很难的部分 - 使用密钥签署请求.但是现在我被挂在了一件容易的东西上.我有这个结果的REST请求传输:
GET /gss3/sayHello.js HTTP/1.1
Host: gss3.s3.amazonaws.com
Date: Thu Feb 07 2013 08:16:25 GMT-0500 (Eastern Standard Time)
Authorization: AWS AKIAJTURNBE6SXNTVVGQ:eWJOLZnj6Eja3CEC2CyifeURnxg=
Run Code Online (Sandbox Code Playgroud)
由于这是来自www.mydomain.com的对s3.amazonaws.com的调用,我正在寻找JSONP来绕过相同的原始政策.不过,我没有看到任何方式扩展头添加到jQuery的JSONP调用,并与AWS进行身份验证,你必须传递4号线:
Authorization: AWS AKIAJTURNBE6SXNTVVGQ:eWJOLZnj6Eja3CEC2CyifeURnxg=
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我在浏览器/ jQuery环境中如何将此REST请求传输到AWS?我在这里错过了什么?谢谢帮......
尽管此源是为PHP编写的,但使用PHP的博客Amazon AWS S3查询字符串身份验证显示了如何编译普通的旧查询字符串并将签名作为参数传递给S3.
$url .= '?AWSAccessKeyId='.$awsKeyId
.'&Expires='.$expires
.'&Signature='.$signature;
Run Code Online (Sandbox Code Playgroud)
使用crypto-js并转换为Javascript然后给我们这样的东西:
var filePath = "/bucket/file.js";
var dateTime = Math.floor(new Date().getTime() / 1000) + 300; // allows for 5 minutes clock diff
var stringToSign = "GET\n\n\n" + dateTime + "\n" + filePath;
var signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(stringToSign, secretAccessKey));
var queryString = "?AWSAccessKeyId=" + accessKeyId + "&Expires=" + dateTime + "&Signature=" + encodeURIComponent(signature);
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://s3.amazonaws.com/bucket/file.js" + queryString;
$("head").append(script); // jQuery version
Run Code Online (Sandbox Code Playgroud)
你去了,差不多是为你写的整个香蕉.我希望这可以帮助别人.
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |