親愛なる皆さん、私は Node.js を始めたばかりだと考えてください。
Node.js サーバーで解析する HTML フォームからクロスドメイン フォーム データを取得しようとしています。プリフライトを必要とする POST リクエストではなく、単純な POST データでこれを行うことができました。
私はcloud9 app serversで Node コードを実行しています。また、Corsモジュールを使用してリクエストを処理しています。このモジュールは、単純なリクエスト (単純なリクエストが機能することを確認するためにここでテストします) ではうまく機能しますが、プリフライトが必要なリクエストでは、Chrome インスペクター コンソールからこの結果を取得します。
XMLHttpRequest cannot load https://nms-motaheri-1.c9.io:8080/mail.
The request was redirected to 'https://c9.io:8080/api/nc/auth?.....SHORTENED',
which is disallowed for cross-origin requests that require preflight.
ここに私のserver.jsコードがあります:
// Define dependencies
var express = require('express')
, cors = require('cors')
, app = express()
, parse_post = require("parse-post");
// Core module config
var corsOptions = {
origin: '*',
preflightContinue: true // <- I am assuming this is correct
};
app.use(cors(corsOptions));
// Respond to option request with HTTP 200
// ?? Why is this not answering my OPTION requests sufficiently ??
app.options('*',function(req,res){
res.send(200);
});
// Give a hello world response to all GET requests
app.get('/',function(req,res){
res.sendFile(__dirname + '/index.html');
});
// Handle all POST requests to /mail
app.post('/mail', parse_post(function(req, res) {
console.log(req.body);
res.json({msg: 'This is CORS-enabled for all origins!'});
})
);
// Listen on default Cloud9 port which is 8080 in this case
app.listen(process.env.PORT, function(){
console.log('CORS-enabled web server listening on port ' + process.env.PORT);
});
これはなぜですか?また、プリフライトで POST の OPTION リクエストに満足に答えるにはどうすればよいですか?
ありがとう、助けていただければ幸いです。