JSONP呼び出しを試しています。サーバー1のドメインdomain1.comの下にNodeJsアプリがあります。次のようになります。
server.get('/api/testjsonp', function(req, res) {
var clientId = req.param('clientId');
res.header('Content-Type', 'application/json');
res.header('Charset', 'utf-8')
res.send(req.query.callback + '({"something": "rather", "more": "fun",
"sourceDomain": "' + req.headers.origin + '"' + ',"clientId":"' + clientId +
'"});');
});
別のサーバー(サーバー2)と別のドメイン(domain2.com)で、次のような呼び出しを使用してテストHTMLページを作成しました。
var data = { clientId : 1234567890 };
$.ajax({
dataType: 'jsonp',
data: data,
jsonp: 'callback',
url: 'https://domain1.com/api/testjsonp?callback=1',
success: function(data) {
alert('success');
},
error: function(err){
alert('ERROR');
console.log(err);
}
});
ここに2つの問題があります:
1)なぜこれが機能しているのですか?それはクロスドメイン呼び出しではないので、ALLOW-ORIGINヘッダーのものを実装する必要がありますか?私はこの例に従っています:
http://css.dzone.com/articles/ajax-requests-other-domains
http://benbuckman.net/tech/12/04/cracking-cross-domainallow-origin-nut
2)サーバーでは、どのドメインが呼び出しを行っているのかわかりません。req.headers.originは常に未定義です。不要な呼び出しを防ぐために、どのドメインが呼び出しているかを知りたいのですが。別の方法として、呼び出し元のIPを確認することもできますが、どのようにすればよいでしょうか。
どうもありがとう