は私が設定し、次のNode.jsサーバーはポート9001HTTPS経由でnode.jsサーバーにAJAXリクエストを送信するにはどうすればよいですか?
var https = require('https');
var fs = require('fs');
var qs = require('querystring');
var options = {
key: fs.readFileSync('privatekey.pem'),
cert: fs.readFileSync('certificate.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
console.log('Request Received!');
console.log(req.method);
if (true || req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function() {
console.log(body);
var POST = qs.parse(body);
console.log(POST);
});
}
res.end("hello, world\n");
}).listen(9001);
に耳を傾けていると私は
function form_save()
{
console.log("submitted!");
var data_obj = {
data1: "item1",
data2: "item2"
}
$.ajax({
url: 'https://adam.testserver.com:9001/',
type: "POST",
dataType: "json",
data: data_obj,
success: function() {
console.log("success!");
},
complete: function() {
console.log("complete!");
}
});
}
がで発生した二つの問題がありますAJAX呼び出しに応答するために、このサーバーを取得しようとしています私の取り決め。最初は、私は、サーバーを起動してから、私のform_saveをトリガーボタンをクリックした場合()ノードサーバーが応答しないということで、私は次のエラーを取得:私がアクセスする場合は、この時点で
submitted!
OPTIONS https://adam.testserver.com:9001/ Resource failed to load
jQuery.extend.ajaxjquery.js:3633
$.ajaxjquery.validate.js:1087
form_savew_worksheet.php:64
confirm_deletew_worksheet.php:95
jQuery.event.handlejquery.js:2693
jQuery.event.add.handlejquery.js:2468
w_worksheet.php:73
complete!
をそのURLのdirecty( https://adam.testserver.com:9001/)「hello、world」の出力とコンソールメッセージ「Request Received! GET」が表示されます。この時点から、ボタンをクリックしてAJAX呼び出しをトリガーすると、新しいエラーが発生します。
submitted!
XMLHttpRequest cannot load https://adam.testserver.com:9001/. Origin
https://adam.testserver.com is not allowed by Access-Control-Allow-Origin.
w_worksheet.php:73
complete!
私のフォームとノードサーバーの両方が同じサーバー上にあるため、このメッセージが表示される理由を理解できません。読んでくれてありがとう、ありがとう、私はこれに得ることができるすべての助けに感謝します。私はしばらくの間立ち往生してきた!
ありがとうございます!これはすばらしい情報で、私をつかまえて再び走った。それは機能しますが、なぜこれがクロスオリジンであると考えられるのか不思議です。それは私が提出しているフォームがApacheサーバーに座っていて、ノードサーバーのデータを処理しようとしているからですか?助けてくれてありがとう! – akronymn
遅く返事を申し訳ありません。私は[これが理由だ]と思う(http://www.w3.org/TR/cors/#access-control-allow-origin-response-hea#user-agent-security)。 SSL証明書は異なる(したがって正式に2つの論理エンティティによって実行される)ため、すべてのHTTPS要求にCORSが必要なように見えます。 –