اذهب إلى المحتوى

السؤال

نشر

أحاول استخدام ملفات تعريف الارتباط من خلال express في node.js ولكن لا يتم إضافتها بشكل صحيح، وهذا هو الكود:

var express = require('express'), http = require('http');
var app = express();
app.configure(function(){
      app.use(express.cookieParser());
      app.use(express.static(__dirname + '/public'));

      app.use(function (req, res) {
           var value_random=Math.random().toString();
           value_random=value_random.substring(2,value_random.length);
           res.cookie('cokkieName',value_random, { maxAge: 900000, httpOnly: true })

           console.log('test cookie created');
      });

});

var server = http.createServer(app);
server.listen(5555);

كيف يمكنني حل المشكلة؟

Recommended Posts

  • 1
نشر

إن ترتيب استخدام الوسطاء middlewares في node.js مهم ويحدث فرق في تنفيذ الكود البرمجي. والوسيط الذي يتم التصريح عنه أولاً سيتم استدعائه أولاً، وفي حال كان بإمكانه استقبال الطلب، لن يتم استدعاء أي وسيط آخر تم تعريفه بعده.

وفي الكود لديك، قمت بوضع express.static أولاً، وبالتالي هو من سيقوم باستقبال الطلب. لذلك يجب عليك إعادة ترتيب الكود لديك ليصبح بالشكل التالي:

app.use(express.cookieParser());


app.use(function (req, res, next) {
  
  var cookie = req.cookies.cookieName;
  if (cookie === undefined) {
   
    var value_random=Math.random().toString();
    value_random=value_random.substring(2,value_random.length);
    res.cookie('cookieName',value_random, { maxAge: 900000, httpOnly: true });
    console.log('test cookie created');
  } else {
     
    console.log('لقد تم تعريفها مسبقاً', cookie);
  } 

  next();

});

app.use(express.static(__dirname + '/public'));

ومع النسخ الحديثة من express تم فصل التعامل مع ملفات تعريف الارتباط، فيمكنك بدلاً من:

app.use(express.cookieParser());

يجب عليك تحميل المكتبة بشكل منفصل من خلال:

npm i cookie-parser

ثم استخدامها بالشكل التالي:

const cookieParser = require('cookie-parser');
app.use(cookieParser());

 

  • -1
نشر (معدل)

إذا كنت تستعمل Express v4، لتفعيل الكوكيز يتم تنصيب الحزمة cookie-parser، من الأمر التالي:

npm i cookie-parser

ثم استخدامها في ملف السرفر كالتالي

var express = require('express')
var cookieParser = require('cookie-parser')
 
var app = express()
app.use(cookieParser())

اذا أردت عمل Middleware يقوم بعمل كوكي ويضع في قيمتها رقم عشوائي (كما بالكود عندك)
 

app.use(cookieParser()); // يجب أن تستدعيها قبل استخدام الكوكيز

app.use(function (req, res, next) {
  var value_random = Math.random().toString();
  value_random=value_random.substring(2,value_random.length);
  res.cookie('cokkieName',value_random, { maxAge: 900000, httpOnly: true })

  console.log('test cookie created');
  next();
});

 

تم التعديل في بواسطة عبدالله أحمد4
  • 0
نشر

هذه الشيفرة يمكنها العمل بدون مشاكل لكن في حالة ما كنت تستخدم نسخة express 2 وهي قديمة لذا تحقق أي نسخة من express انت تستخدم بالنسبة ل النسخة 4 يمكنك استخدام

var express = require('express');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser());
app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
  // Cookies that have not been signed
  console.log('Cookies: ', req.cookies);

  // Cookies that have been signed
  console.log('Signed Cookies: ', req.signedCookies);
});

app.listen(8080);

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...