node.js モジュール経由で送信される HTTPS リクエストと XMLHttpRequest 経由で送信される HTTPS リクエストの違いは何ですか?
HTTPS GET リクエストを amazon aws に送信して、javascript (XMLHttpRequest) からセキュリティ トークンを取得しようとしていますが、常に「Origin http://my_ip is not allowed by Access-Control-Allow-Origin」で失敗しますが、 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);
});
誰でもこれがどのように機能するか説明できますか?