0

从 jQuery 或 XMLHttpRequest 获取亚马逊 AWS 安全令牌时运气不佳。当我从 jQuery 或 XmlHttpRequest 发送 HTTP GET 时,我得到“Access-Control-Allow-Origin 不允许 Origin http:// MY_IP。”,但如果我在浏览器中粘贴相同的 URL,一切正常。

我的代码:

var url_ = "https://sts.amazonaws.com/?Action=GetSessionToken" +
            "&DurationSeconds=3600" +
            "&AWSAccessKeyId=" + AccessKeyId +
            "&Version=2011-06-15" +
            "&Timestamp=" + encode(timestamp) +
            "&Signature=" + encode(hash) +
            "&SignatureVersion=2&SignatureMethod=HmacSHA256";
$.get(url_, function(data) {
alert("response: "+data);
});

我的标题:

响应标头
接受范围字节
年龄 198
连接保持活动
内容长度 3739
内容类型文本/html
日期 2012 年 6 月 25 日星期一 17:48:20 GMT
Etag "48c4862-e9b-4c34f76b13400"
最后修改时间 2012 年 6 月 25 日星期一17:39:28 GMT
Proxy-Connection Keep-Alive
Server Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.10 with Suhosin-Patch

请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
DNT 1
Host MY_IP
If-修改自 2012 年 6 月 25 日星期一 17:13:16 GMT
If-None-Match "48c127c-ea2-4c34f18fe6300"
Proxy-Connection keep-alive
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0 ) 壁虎/20100101 火狐/12.0

浏览器标头(如果在浏览器中使用 URL)

响应标头
Content-Length 808
Content-Type text/xml
日期 Mon, 25 Jun 2012 17:31:54 GMT
x-amzn-RequestId a854ff13-beeb-11e1-b3ac-0147da731d96

请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
DNT 1
主机 sts.amazonaws.com
用户代理 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0

我尝试了一些来自http://www.html5rocks.com/en/tutorials/cors/的代码,但没有运气

任何帮助表示赞赏

4

1 回答 1

1

你刚才问了这个问题,你可能已经找到了答案,但如果其他人正在寻找这个问题的答案,这里是:

Access-Control-Allow-Origin 是 XMLHttpRequest 的一项安全功能,用于执行在运行 javascript 的网页域之外的请求时。

例如,一个网页http://foo.com/index.html正在为http://bar.com/query?a=b做一个 XMLHttpRequest 请求,bar.com 的服务器必须把 Access-Control-Allow - 响应标头中的来源以指定允许跨域请求。

不幸的是,亚马逊 AWS 没有在响应标头中提供 Access-Control-Allow-Origin,这意味着您无法使用此技术访问它。

唯一适用于 AWS 的技术是使用 flash 代理 XMLHttpRequest,但这仅适用于安装了 flash 的设备(没有 iphone 或 ipad)。

于 2012-08-26T00:03:27.370 回答