• 0

تحويل الإتصال إلى HTTPS بإستخدام Node.js

لقد قمت بإنشاء السيرفر الخاص بي وإستخدام HTTPS بنجاح ولكن حينما يحاول المستخدم الإتصال بالسيرفر من خلال بروتوكول HTTP لا يتم الأمر بنجاح أريد تحويل أي إتصال للسيرفر من بروتوكول HTTP إلى HTTPS

هذا هو الكود الذي أستخدمه

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);

حينما يأتي طلب إلى السيرفر بإستخدام الرابط

https://127.0.0.1:3000/

يكون الرد كما هو متوقع "hello world"
ولكن حينما يأتي الطلب إلى السيرفر بإستخدام رابط لا يحتوي على بروتوكول HTTPS على سبيل المثال  "http:127.0.0.1/3000" تحدث المشكله ولا يتم إرسال الرد بالشكل الصحيح.

فكيف يمكنني حل هذه المشكله بتحويل كافة الطلبات إلى HTTPS

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك عمل إعادة تحويل للاتصالات الواردة عبر بروتوكول HTTP وتحويلها ل HTTPS:

res.writeHead(301, { 
	"Location": "https://" + req.headers['host'].replace(http_port,https_port) + req.url 
});

باستخدام الطريقة السابقة سنقوم بعمل إعادة توجيه لنفسنا ولكن بتغغير البروتوكول، فعليا إعادة استدعاء الرابط بغير بروتوكول

سنقوم بوضع الشيفرة السابقة ضمن مخدم HTTP في التطبيق الذي مهمته فقط إعادة التوجيه:


https.createServer(options, function (req, res) {
    res.end('نجاح!');
}).listen(443);

// إعادة توجيه من http port 80 to https 

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(301, { "Location": "https://" + req.headers['host'].replace(http_port,https_port) + req.url });
    res.end();
}).listen(80);

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك إستخدام الكود السابق للمدرب وائل

أويمكنك بإستخدام express عمل تحويل بكل سهولة بإستخدام هذا الكود

var http = express();

/*
تحويل المسار من
http
الى
https
*/
http.get('*', function(req, res) {  
    res.redirect('https://' + req.headers.host + req.url);

    //أو يمكنك إستخدام هذا الكود وإضافة اسم الدومين يدويا
    // res.redirect('https://example.com' + req.url);
})


http.listen(8080);

أو يمكن استخدام هذا الكود في مايسمى بال middleware 

app.get('/', function(req, res, next) {
    if (req.protocol == 'http') {
        res.redirect('https://' + 
        req.get('host') + req.originalUrl);
    }
});

أما إذا أردت عدم إستخدام express الذي تسهل عليك الكثير فيمكنك إستخدام هذا الكود

var https = require('https');

var fs = require('fs');
var options = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem')
};
/*
إنشاء خادم
https
*/
https.createServer(options, function (req, res) { 
    res.end('secure!');
}).listen(443);

/*
تحويل من
http
الى
https
*/
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
    res.end();
}).listen(80);

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن