Node.js では、Jade をテンプレート レンダラーとして使用している場合、res.render 呼び出しで可能な唯一の出力は HTML です。
Content-Type: text/html
ただし、対応するヘッダーは自動的に含まれません。
これは設計によるものですか?もしそうなら、このヘッダーをすべてのルートに追加せずにこれを実装する簡単な方法はありますか?
Node.js では、Jade をテンプレート レンダラーとして使用している場合、res.render 呼び出しで可能な唯一の出力は HTML です。
Content-Type: text/html
ただし、対応するヘッダーは自動的に含まれません。
これは設計によるものですか?もしそうなら、このヘッダーをすべてのルートに追加せずにこれを実装する簡単な方法はありますか?
それは翡翠の使い方次第です。jade はレンダリングを行うだけで、レンダリングされたコンテンツの適切なヘッダーを認識していません。
res.setHeader('Content-Type', 'text/html'); //or text/plain
res.render('yourtemplate');
最も適したヘッダーを選択する必要があります。
Content-Type: text/html
すべての get リクエストを強制するデモ アプリを作成しました。次に、そのヘッダーを設定する機能を無効にしようとしましたが、そのヘッダーがまだ応答に表示されているため、デフォルトで設定されているようです。
Content-Type が設定されていませんか? Express のバージョンとヘッダーの表示方法を教えてください。Express 3.4.1 と Chromium を使用しています
// app.js
var express = require('express');
var app = express();
function setHTML(req, res, next){
res.header('Content-Type', 'text/html');
next();
};
app.set('views', __dirname);
app.set('view engine', 'jade');
app.use(app.router);
//app.get('*', setHTML);
app.get('/', function(req, res){
res.render('template');
});
require('http')
.createServer(app)
.listen(3000, function(){
console.log('Listening on 3000');
})
// template.jade
!!!
html
body
h1 hello thar
//response headers
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 60
Date: Thu, 17 Oct 2013 03:50:46 GMT
Connection: keep-alive
you can override res.render method
app.use(function(req, res, next){
var oldRender = res.render;
res.render = function(){
res.header('Content-Type', 'text/html');
oldRender.apply(this, arguments);
};
next();
});
Do this just after creating your app.