发送后无法发送标头

时间:2015-11-26 12:49:49

标签: javascript node.js

ı有错误 :发送后不能发送标题。从网址和浏览器redireck网址获取,但不得从home.html获取内容 我有错误 :发送后不能发送标题。从网址和浏览器redireck网址获取,但不得从home.html获取内容

var path = require('path');
var express = require('express');
var app = express();
var server = app.listen(80);
var io = require('socket.io').listen(server);
var session = require('express-session'); //session işlemleri
mongodb = require('mongodb'); //veritabanı işlemleri
var mongoclient = mongodb.MongoClient;
var bodyparser = require('body-parser'); //form submit için
var multer = require('multer'); //dosya yükleme
app.use("/style", express.static(__dirname + "/style"));
app.use("/images", express.static(__dirname + "/images"));
app.use("/scripts", express.static(__dirname + "/scripts"));
app.use(bodyparser.urlencoded({
  'extended': 'true'
}));
app.use(bodyparser.json());
app.use(session({
  'secret': 'hhhhh',
  resave: true,
  saveUninitialized: true
}));
//register
app.get("/register", function(req, res) {
  if (req.session.userid) {
    res.redirect("/home")
  };
  res.sendFile(__dirname + "/register.html");

});

//register

//register post

app.post("/register", function(req, res) {

  var reguserame = req.body['username'].trim();
  var regpassword = req.body['password'].trim();

  mongoclient.connect("mongodb://127.0.0.1/deneme", function(err, db) {
    if (err) {
      res.sendStatus("veritabanı ile ilgili bir hatta algılandı");
    } else {
      var users = db.collection("users");
      users.count({
        "name": reguserame
      }, function(err, count) {

        if (count == 1) {
          res.send("bu kullanıcı adı daha önce alınmış");
          res.end();
        } else {


          var kayit = db.collection("users").insert({
            "name": reguserame,
            "pass": regpassword
          });

          if (kayit) {
            res.send('kayıt basarılı <a href="/login">giriş yap</a>');
          } else {
            res.send("kayit basarısız");
          }

          res.end();
        }

      });


    }


  });

});
//register post
//logout
app.get("/logout", function(req, res) {
  req.session.destroy();
  res.redirect("/login");
});
//logout
app.get("/login", function(req, res) {

  if (req.session.userid) {
    res.redirect("/home");
  }

  res.sendFile(__dirname + "/login.html");
});
//login kontrol
app.post("/login", function(req, res) {

  var username = req.body['username'].trim();
  var password = req.body['password'].trim();


  mongoclient.connect("mongodb://127.0.0.1:27017/deneme", function(err, db) {

    db.collection("users").find({
      "name": username,
      "pass": password
    }).toArray(function(err, result) {
      var sayisi = result.length;
      ///uye kontrol

      if (sayisi == 1) {


        res.status(200);
        req.session.userid = result[0]._id;
        res.redirect("/home");


      } else {


        res.sendStatus("hatalı parola");
        res.end();
      }
      db.close();
      //uye kontrol
    });


  });
});
//home sayfası

app.get("/home", function(req, res) {

  if (req.session.userid) {

    res.sendFile(path.join(__dirname + "/home.html"));
    res.end();
  } else {

    res.send("henüz giriş yapılmamış");

    res.end();

  }


});

//login kontrol





app.use(function(req, res) {


  res.status("404");
  res.write("<div  style='height:100%;   top:0px; left:0px; position:absolute; text-align: center; vertical-align: center; width:100%; background: #eee;'><h1 style='border:1px solid #999; color:#f63; margin-top:20%;'>sayfa yok</h1></div>");
  res.end();

});

res.redicert("/home") this row by ı get error

  > Blockquote

///请

2 个答案:

答案 0 :(得分:1)

在此部分代码中,它正在发送状态200,重定向要发送状态302

         res.status(200);
         req.session.userid=result[0]._id;
         res.redirect("/home");

无法发送状态302,因为它已发送状态200。请尝试删除res.status(200)

还有其他类似的问题:

if(req.session.userid){ res.redirect("/home");}

res.sendFile(__dirname+"/login.html");

returnredirect()部分需要进入sendFile()区块之后,它需要else。 redirect()正在发送302,然后sendFile()执行,并希望发送200

答案 1 :(得分:0)

不确定这是否是你的所有问题,但你有拼写错误

bool b1 = new PersonComparer().Equals(x, y);