javascript - 為什么express,get的res.sendFile返回的是html純文本?
問題描述
let express = require(’express’);let db = require(’./db/db’);let app = express();app.all(’*’, function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'X-Requested-With'); res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS'); res.header('X-Powered-By', ’ 3.2.1’) res.header('Content-Type', 'application/json;charset=utf-8'); next();});app.get(’/’, (req, res) => { res.sendFile(__dirname + ’/index.html’);});let apiRoutes = express.Router();apiRoutes.get(’/seller’, function (req, res) { db.find(req.query.id, function (err, result) { if (err) { console.log(’Error:’ + err); return; } else { let seller = result[0].toObject(); delete seller.goods; delete seller.ratings; res.json({errno: 0,data: seller }); } });});apiRoutes.get(’/goods’, function (req, res) { db.find(req.query.id, function (err, result) { if (err) { console.log(’Error:’ + err); return; } else { res.json({errno: 0,data: result[0].toObject().goods }); } });});apiRoutes.get(’/ratings’, function (req, res) { db.find(req.query.id, function (err, result) { if (err) { console.log(’Error:’ + err); return; } else { res.json({errno: 0,data: result[0].toObject().ratings }); } });});app.use(’/api’, apiRoutes);app.listen(3000);console.log(’Listening on port 3000...’);
為什么
app.get(’/’, (req, res) => { res.sendFile(__dirname + ’/index.html’);});
返回的是html純文本而不是文件?
但是
var express = require(’express’);var bodyParser = require(’body-parser’);var db = require(’./validate’);var app = express();app.use(bodyParser.urlencoded({ extended: true }));// respond with 'hello world' when a GET request is made to the homepageapp.get(’/’, (req, res) => { res.sendFile(__dirname + ’/index.html’);});app.post(’/dosomething’, (req, res) => { var message = req.body; db.create(message.name, message.age, message.city, function (err, mes) {if (err) { throw err;} else { console.log(mes);} });})app.listen(1212);console.log(’is ok ...’);
就能正常顯示網頁?
問題解答
回答1:第一個你設置了headerres.header('Content-Type', 'application/json;charset=utf-8');瀏覽器就會按照json解析
第二個,沒設置,默認就是Content-Type:text/html; charset=utf-8自然就按照 html解析
回答2:對頭,設置Content-Type,你用Chrome瀏覽器看看http響應的header對不對。
