1

Express を使用して非常に基本的な node.js アプリを作成しようとしています。これは、CORS および HTTPS を介して log4javascript からブラウザー イベント ログを取得し、それらを mongoDB に書き込みます。bodyParser にデータを表示させようとして困っています。あらゆる種類の bodyParser 構成を試しましたが、req.body、req.params、および req.query は常に空です。

これが私のコードです。

var fs = require('fs'),
  bodyParser = require('body-parser'),
  express = require('express'),
  cors = require('cors'),
  app = express(),
  https = require('https'),
  key = fs.readFileSync('*****/key.pem'),
  cert = fs.readFileSync('*****/cert.pem'),
  https_options = {
    key: key,
    cert: cert
  };

app.use(bodyParser.json());
app.use(cors());
app.post('/', function (req, res) {
   console.log(req);
   res.send('Hello World!')
});

https.createServer(https_options, app).listen(3443);

log4javascript で JSON レイアウトを使用しています。ここに私のフロントエンドコードがあります:

    var logger = log4javascript.getDefaultLogger(),                           
                 userAgent = navigator.userAgent.toLowerCase(),                        
                 ajaxAppender = new log4javascript.AjaxAppender("https://***/log/");
                 ajaxAppender.addHeader("Content-Type", "application/json");           
                 jsonLayout = new log4javascript.JsonLayout(false, false);             
                 ajaxAppender.setLayout(jsonLayout);                                   
                 ajaxAppender.setBatchSize(10);                                        
                 ajaxAppender.setThreshold(log4javascript.Level.INFO);                 
                 logger.addAppender(ajaxAppender);                          

これは、Chrome に従って log4javascript が送信するもののサンプルです。

. 等 . 等

私は何を間違っていますか?CORS、HTTPS、APACHE mod_proxy、またはその他の何かが、本文を解析する Express の機能を妨げますか? Log4Javascript は、本文を読み取れるように構成する必要がある奇妙な方法で POST を送信しますか? 助けてください!

4

1 に答える 1

1

AjaxAppenderどのようにセットアップしたかによって異なります。一連のフォーム フィールドを投稿するかのようにログ メッセージを送信するように構成することも (期待しているように聞こえます)、単にペイロードをエンコードせずに送信するように構成することもできます (これが実際に行われているようです)。マニュアルの注意事項を参照してください。

http://log4javascript.org/docs/manual.html#ajaxappender

于 2015-01-23T10:05:38.483 に答える