第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Heroku NodeJS http到https ssl強(qiáng)制重定向

Heroku NodeJS http到https ssl強(qiáng)制重定向

呼如林 2019-11-06 11:05:02
我有一個(gè)應(yīng)用程序在heroku上運(yùn)行,并在帶有https的節(jié)點(diǎn)上運(yùn)行express。我該如何識(shí)別協(xié)議以在heroku上使用nodejs強(qiáng)制重定向到https?我的應(yīng)用程序只是一個(gè)簡單的http服務(wù)器,它(尚未)意識(shí)到heroku正在向其發(fā)送https請(qǐng)求:/* Heroku provides the port they want you on in this environment variable (hint: it's not 80) */app.listen(process.env.PORT || 3000);
查看完整描述

3 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

使用Heroku Cedar stack和ExpressJS?3.4.4,這是一個(gè)工作代碼集。


這里要記住的主要事情是我們正在部署到Heroku。SSL終止發(fā)生在負(fù)載平衡器上,然后加密的流量到達(dá)您的節(jié)點(diǎn)應(yīng)用程序??梢酝ㄟ^req.headers ['x-forwarded-proto'] ==='https'測(cè)試是否使用https發(fā)出請(qǐng)求。


如果您在其他環(huán)境中托管,則無需擔(dān)心在應(yīng)用程序等內(nèi)部是否具有本地SSL證書。但是,如果使用自己的證書,子域等,則應(yīng)首先通過Heroku加載項(xiàng)應(yīng)用SSL加載項(xiàng)。


然后只需添加以下內(nèi)容即可完成從HTTPS到HTTPS以外的任何重定向。這與上面接受的答案非常接近,但是:


確保您使用“ app.use”(用于所有操作,而不僅僅是獲取)

明確將forceSsl邏輯外部化為聲明的函數(shù)

不要將'*'與“ app.use”一起使用-當(dāng)我測(cè)試它時(shí),這實(shí)際上失敗了。

在這里,我只想在生產(chǎn)中使用SSL。(根據(jù)您的需要進(jìn)行更改)

碼:


 var express = require('express'),

   env = process.env.NODE_ENV || 'development';


 var forceSsl = function (req, res, next) {

    if (req.headers['x-forwarded-proto'] !== 'https') {

        return res.redirect(['https://', req.get('Host'), req.url].join(''));

    }

    return next();

 };


 app.configure(function () {


    if (env === 'production') {

        app.use(forceSsl);

    }


    // other configurations etc for express go here...

}

對(duì)SailsJS(0.10.x)用戶的注釋。您可以在api / policies中簡單地創(chuàng)建一個(gè)策略(enforceSsl.js):


module.exports = function (req, res, next) {

  'use strict';

  if ((req.headers['x-forwarded-proto'] !== 'https') && (process.env.NODE_ENV === 'production')) {

    return res.redirect([

      'https://',

      req.get('Host'),

      req.url

    ].join(''));

  } else {

    next();

  }

};

然后參考config / policies.js以及其他任何策略,例如:


'*':['已驗(yàn)證”,'enforceSsl']


查看完整回答
反對(duì) 回復(fù) 2019-11-06
  • 3 回答
  • 0 關(guān)注
  • 837 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)