Backend tarafında Node.js in express yapısının kullanıldığı, Frontend tarafında ise React.js'in kullanıldığı bir uygulamam var. Backend - Frontend arası haberleşme sistemlerinde herhangi bir sıkıntı yok fakat konu 'SESSION' yapısına veya Cookie yapısını geldiğinde bazı problemler ortaya çıkmaktadır.
Örneğin Login işlemleri esnasında Backend tarafına istek atıp SESSION oluşturduğumda oluşturulan Session'a ait Cokkie bilgilerinin frontend alanıma eklenmesi gerekirken maalesef bu işlemi yapamamaktayım.
Araştırdığım kaynaklar bana Node.js tarafında Cors paketinin içerisine 'CREDENTIALS' özelliği eklememi ve Frontend tarafında aynın şekilde Credentials özelliklerini True hale getirmemi söylediler.
Kodlar:
İstek yapılarını görmek isteyenler varsa öncesinde şunu söyleyeyim POSTMAN ile kontrol ettiğimde session oluşturuluyor ve başarılı bir şekilde çalışıyor. Sadece Frontend tarafından atıldığında Frontend Cookie alanına Session erişim bilgilerinin gelmediğini görüyorum.
Yani problem kesinlikle Frontend alanına Cookie eklenmemesi ile alakalı fakat çözüm nedir onu bilmiyorum, bilgisi olup bizi aydınlatacak biri var mıdır acaba?
Örneğin Login işlemleri esnasında Backend tarafına istek atıp SESSION oluşturduğumda oluşturulan Session'a ait Cokkie bilgilerinin frontend alanıma eklenmesi gerekirken maalesef bu işlemi yapamamaktayım.
Araştırdığım kaynaklar bana Node.js tarafında Cors paketinin içerisine 'CREDENTIALS' özelliği eklememi ve Frontend tarafında aynın şekilde Credentials özelliklerini True hale getirmemi söylediler.
Kodlar:
JavaScript:
// * Backend area
const corsOptions = {
origin:allowedOrigins,
methods:['GET', 'PUT', 'DELETE', 'POST'],
credentials:true,
optionsSuccessStatus:200
}
app.use(expressSession({
key:'userID',
secret:'Deneme',
resave:false,
proxy:true,
saveUninitialized:true,
cookie:{path:'/', httpOnly:true, secure:false, maxAge:time}
}))
app.use(cors(corsOptions))
// * Frontend Area
Axios.defaults.withCredentials = true
const handlePost = () => {
Axios.post('http://127.0.0.1:8000')
.then((response) => {
console.log(response.data)
})
}
JavaScript:
// Create a sesssion
app.post('/', (req, res)=>{
req.session.userID = 'hello world'
res.send({
message:'Is created a session?'
})
})
// Is there session control
app.get('/', (req, res)=>{
if(req.session.userID){
res.send({
case:'true'
})
}
else{
res.send({
case:'false'
})
}