expressjs http не работает с spdy

Я хотел бы перенаправить весь незащищенный http-трафик на безопасный сервер spdy. Если я собираюсь открыть страницу с протоколом https, я получаю ответ от сервера, но когда я пытаюсь получить к нему доступ по http, браузер просто продолжает вращаться, и у меня вообще нет ответа.

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)

Буду признателен за любую помощь, спасибо.


person Makromat    schedule 10.02.2017    source источник
comment
Какой браузер вы используете? т.е. Chrome удалил поддержку для SDPY caniuse.com/#search=spdy.   -  person Prinzhorn    schedule 10.02.2017
comment
npmjs.com/package/spdy   -  person Makromat    schedule 10.02.2017


Ответы (1)


expressjs http не работает с spdy

Потому что HTTP не SPDY. Это совершенно разные протоколы.

Видеть:

для модулей, поддерживающих SPDY.

person rsp    schedule 10.02.2017
comment
Ну, я уже использую этот модуль. npmjs.com/package/spdy, я получил ответ от https:// и вижу http2 в инструментах разработчика. - person Makromat; 10.02.2017
comment
возможно, мне нужно создать еще один сервер с http-протоколом, верно? - person Makromat; 10.02.2017