2015-11-26 72 views
3

我有TIS錯誤 :不能發送頭後,他們從send.ı網址和瀏覽器redireck網址,以獲取,但我不明白的內容從home.html的 我有TIS錯誤 :不能發送頭後,他們從send.ı網址和瀏覽器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

///請

+0

重新發送一個請求數據之前,請務必檢查'res.headersSent'。如果'res.headersSent'是真的,那麼你只能'寫'或'結束'請求。 –

+0

如果res.headerSent我現在試圖 –

+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"); 

它要麼redirect()後需要returnsendFile()部分需要在else塊去。重定向()發送302,然後sendFile()執行並想發送200

+0

我再次刪除res.status我得到錯誤 –

0

不知道這是你所有problemms的,但你有一個拼寫錯誤

// res.redicert("/home") --> 
res.redirect("/home") 
+0

是的我確信... res.redirect(「/ home」);問題在這一行 –

相關問題