2017-02-10 5 views
0

Ich möchte alle unsicheren HTTP-Verkehr auf sichere Spdy-Server umleiten. Wenn ich die Seite mit dem https-Protokoll öffne, bekomme ich eine Antwort vom Server, aber wenn ich versuche, mit http darauf zuzugreifen, geht der Browser einfach weiter und ich habe überhaupt keine Antwort.expressjs http funktioniert nicht mit spdy

const express   = require('express') 
const https   = require('spdy') 
const http    = require('http') 
const ECT    = require('ect') 
const upload   = multer({ dest: __dirname + '../public/uploads/'}) 
const cookieParser  = require('cookie-parser') 
const bodyParser  = require('body-parser') 
const session   = require('express-session') 
const passport   = require('passport') 
const redis   = require('redis') 
const RedisStore  = require('connect-redis')(session) 
const fs    = require('fs') 
const url    = require('url') 
const expressValidator = require('express-validator') 
const compression  = require('compression') 
const _    = require('lodash') 
const env    = process.env.NODE_ENV || 'production'; // development or production => changes config and secrets settings 
const secrets   = require('./config/secrets')[env]; 
const azureconf   = require('./config/azure'); 
const app    = express() 
const ectRenderer  = ECT({ watch: true, root: __dirname + '/views', ext : '.ect', gzip: true }); 
const client   = redis.createClient() 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(cookieParser()); 
app.use(expressValidator()); 
app.set('view engine', 'ect'); 
app.engine('ect', ectRenderer.render); 
app.use(compression()) 
app.use(express.static(__dirname + '/public', { maxAge: 2419200 })); 
app.use(session({ 
     store: new RedisStore({ 
      host:'127.0.0.1', 
      port: 6379, 
      client: client 
     }), 
    secret:'mostsecuresecretintheworld', 
    saveUninitialized: false, 
    resave: true, 
    cookie: { 
     path: '/', 
     httpOnly: false, 
     secure: true, 
     maxAge: null 
     }, 
    domain: 'mydomain.com' 
})); 
const certOptions = { key: fs.readFileSync('certs/server/my-server.key.pem'), cert: fs.readFileSync('certs/ServerCertificate.crt') }; 
var unsecureServer = http.createServer(function (req, res) { 
    res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url }); 
    res.end(); 
}) 
var secureServer = https.createServer(certOptions, app); 
secureServer.listen(443); 
unsecureServer.listen(80) 

Ich werde jede Hilfe zu schätzen wissen, danke.

+0

Welchen Browser benutzen Sie? I.e. Chrome entfernt suppprt für SDPY http://caniuse.com/#search=spdy – Prinzhorn

+0

https://www.npmjs.com/package/spdy – Makromat

Antwort

0

Express.js http funktioniert nicht mit SPDY

Da HTTP nicht SPDY ist. Das sind völlig unterschiedliche Protokolle.

Siehe:

für Module, die SPDY unterstützen.

+0

Nun, ich benutze dieses Modul bereits. https://www.npmjs.com/package/spdy, ich bekam Antwort von https: // und ich sehe http2 in dev tools. – Makromat

+0

wahrscheinlich muss ich einen anderen Server mit HTTP-Protokoll richtig erstellen? – Makromat

+0

https://webapplog.com/http2-node/ – Makromat