通过 node.js 模块和通过 XMLHttpRequest 发送的 HTTPS 请求有什么区别?
我正在尝试向亚马逊 aws 发送一个 HTTPS GET 请求以从 javascript (XMLHttpRequest) 获取安全令牌,但它总是失败并显示“ Access-Control-Allow-Origin 不允许来源http://my_ip ”,但如果我通过 node.js 模块发送相同的 HTTPS GET 请求它工作正常。
我对此感到困惑,因为如果服务器确实支持 CORS,来自任何地方的任何请求都应该失败,但它通过 node.js,而不是通过 XMLHttpRequest。
这失败了
var url_ = "https://sts.amazonaws.com/?Action=GetSessionToken" +
"&DurationSeconds=3600" +
"&AWSAccessKeyId=XXXXXXXXXXXXXXX" +
"&Version=2011-06-15" +
"&Timestamp=" + encode(timestamp) +
"&Signature=" + encode(hash) +
"&SignatureVersion=2&SignatureMethod=HmacSHA256";
// Simple GET request
$.get(url_, function(data) {
alert("response: " + data);
});
这工作
var https = require('https');
var options = {
host : 'sts.amazonaws.com',
method : 'GET',
path : '/?Action=GetSessionToken' +
'&DurationSeconds=3600' +
'&AWSAccessKeyId=XXXXXXXXXXXXXX' +
'&Version=2011-06-15' +
'&' + timestamp +
'&' + signature +
'&SignatureVersion=2&SignatureMethod=HmacSHA256'
};
https.get(options, function(res) {
res.on('data', function(d) {
process.stdout.write(d);
});
}).on('error', function(e) {
console.error(e);
});
谁能解释我这是如何工作的?