Express
アプリをNginxで報告するのに苦労csp violations
しましたが、上記の回答から学んだ2つのことは次のとおりです。
POST
メソッドではなくGET
メソッドであるべき
req.body
レポートを含む
しかし、上記は十分ではなく、空になり続け、req.body
それを修正する方法を説明する他の投稿が見つかりませんでした. いくつかの調査の後、私はこの投稿に出くわしましdougwilson
たcsp report
.
req.body
が空だった理由はcsp report
、次の構成の後にルート ハンドラーを配置したためです。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
これらの上にルートハンドラーを移動しましたcsp report
が、まだ空になり続けていたので、レポートを取得するためにreq.body
上記のルートハンドラーを追加しましたcsp report
req.body
app.use(bodyParser.json({ type: 'application/csp-report' }));
csp report
リクエスト ハンドラの上に上記の行を追加した後、Express
Content-type を持つリクエストを として解析する必要があることを理解しましたapplication/csp-report
。
おそらくExpress
デフォルトでは parse を行わずapplication/csp-report
、上記を追加することで問題が解決しました。また、if Express
parsesをデフォルトでグーグル検索したところ、Firefox が送信するのに対して送信することを主張するこの要点application/csp-report
に出くわしました(そして、私は Chrome を使用しています -で問題が発生した場合も含めることができます)。Chrome
application/csp-report
application/json
application/json
FF
だから、これは私の中でどのように見えるかですapp.js
// without following csp-report don't get parsed.
app.use(bodyParser.json({ type: 'application/csp-report' }));
app.get('/vehicle/cspreport', function(req, res) {
res.status(403);
});
app.post('/vehicle/cspreport', function(req, res) {
console.log('csp report > ' + JSON.stringify(req.body));
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
...
OPによって投稿された受け入れられた回答はからであり、次のバージョンのNode.js、Express、およびNginxで2011
この問題をどのように解決したかを示す回答を追加することを考えました2016
Node: v4.2.4
Express: 4.13.1
Nginx: 1.8.1