Ak G
Ak G

Reputation: 43

Invalid redirect error in Chrome after migrating to CloudFlare

My site www.exampartner.in runs on an EC2 instance using NodeJS connected to a domain I bought on bigrock.in. To use SSL I migrated to CloudFlare however ever since I migrated to CloudFlare my site is having issues. The main issue is the invalid redirect error I faced on the javascript, logo and ham pic after setting https redirect as a page rule. I then disabled it and tried to load these resources over HTTP but it still failed. Now I've disabled the SSL as well and the page seems to be working. I've attached screenshot for reference. Please Help. Thank You. Here's my routes.js:

var express = require('express');
var router = express.Router();
var passport = require('passport');

router.get('/login', function (req, res, next) {
    res.render('login', { message: req.flash('loginMessage'), user: req.user });
});

router.get('/', function (req, res) {
    res.render('mainpage', { user: req.user });
});

router.get('/signup', function (req, res, next) {
    res.render('signup', { message: req.flash('signupMessage'), user: req.user });
});
// process the login form
router.post('/login', passport.authenticate('local-login', {
    successRedirect: '/profile', // redirect to the secure profile section
    failureRedirect: '/login', // redirect back to the signup page if there is an error
    failureFlash: true // allow flash messages
}));


// app.post('/signup', do all our passport stuff here);
router.post('/signup', passport.authenticate('local-signup', {
    successRedirect: '/profile', // redirect to the secure profile section
    failureRedirect: '/signup', // redirect back to the signup page if there is an error
    failureFlash: true // allow flash messages
}));
// =====================================
// PROFILE SECTION =====================
// =====================================
// we will want this protected so you have to be logged in to visit
// we will use route middleware to verify this (the isLoggedIn function)
router.get('/profile', isLoggedIn, function (req, res) {
    res.render('profile', {
        user: req.user // get the user out of session and pass to template
    });
});

// =====================================
// LOGOUT ==============================
// =====================================
router.get('/logout', function (req, res) {
    req.logout();
    res.redirect('/');
});
// };

// route middleware to make sure a user is logged in
function isLoggedIn(req, res, next) {

    // if user is authenticated in the session, carry on 
    if (req.isAuthenticated())
        return next();

    // if they aren't  logged redirect them to the home page
    res.redirect('/');
}

router.post('/login', passport.authenticate('local-login', {
    successRedirect: '/profile', // redirect to the secure profile section
    failureRedirect: '/login', // redirect back to the signup page if there is an error
    failureFlash: true // allow flash messages
}));

router.get('/bitsat', function (req, res) {
    res.render('bitsat', { user: req.user });
})

router.get('/aieee', function (req, res) {
    res.render('aieee', { user: req.user });
})

router.get('/ip', function (req, res) {
    res.render('ip', { user: req.user });
})

router.get('/jeemain', function (req, res) {
    res.render('jeemain', { user: req.user });
})

router.get('/jeeadvanced', function (req, res) {
    res.render('jeeadvanced', { user: req.user });
})

router.get('/jeemain/:year', function (req, res) {
    res.render(__dirname + '/views/jee_main/' + req.params.year, { user: req.user });
});

router.get('/jeemain/:year/:paper', function (req, res) {
    var filename = req.params.paper.substr(0, 2) + 'April' + req.params.year
    var mor = req.params.paper.indexOf('Morning')
    var eve = req.params.paper.indexOf('Evening')
    if (mor !== -1) {
        filename = filename + req.params.paper.substr(mor, req.params.paper.length)

    }
    if (eve !== -1) {
        filename = filename + req.params.paper.substr(eve, req.params.paper.length);
    }
    res.download(__dirname + '/downloads/jee_main/' + req.params.year + '/' + filename + '.pdf')
});

router.get('/bitsat/:op', function (req, res) {
    res.render(__dirname + '/views/bitsat/' + req.params.op, { user: req.user });
});

router.get('/bitsat/:op/:year', function (req, res) {
    res.download(__dirname + '/downloads/bitsat/' + req.params.op + '/' + req.params.year + '.pdf')
});



module.exports = router;

Upvotes: 1

Views: 422

Answers (1)

SanSolo
SanSolo

Reputation: 2373

Edit: In order to use Cloudflare's strict SSL, you need to install an SSL certificate on your server. Lets Encrypt provides free SSL certificates that have to be renewed every 90 days. If the process seems difficult, you can use Zero SSL which makes it easy to get a certificate from lets encrypt, as well as to update existing certificate.

You have to set up express to handle https request/response. The Node.js app needs ssl certificate and key.

const express = require('express')
const fs = require('fs')
const https = require('https')
const app = express()



https.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
}, app)
.listen(process.env.PORT || 3000, function () {
  console.log('"App Listening at port:" + port')
})

Upvotes: 1

Related Questions