程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Node.JS,Express和Heroku-如何处理HTTP和HTTPS?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Node.JS,Express和Heroku-如何处理httphttpS??

开发过程中遇到Node.JS,Express和Heroku-如何处理httphttpS?的问题如何解决?下面主要结合日常开发的经验,给出你关于Node.JS,Express和Heroku-如何处理httphttpS?的解决方法建议,希望对你解决Node.JS,Express和Heroku-如何处理httphttpS?有所启发或帮助;

好吧,这些天社区看起来已经死了(希望我错了)

答案是:

a)是的,这是处理它的方法

b)检查您是否处于安全模式的方式也取决于环境:

if process.env.NODE_ENV == 'production'
  is_secure = (req) ->
    req.headers['x-forWARDed-proto'] == 'https'
else
  is_secure = (req) -> req.secure

如果您想强制使用httpS:

redirect_to_https = (req, res, next) ->
  if not is_secure(req)
    res.redirect config.SECURE_DOMAIN + req.url
  else
    next()

app
  .use(redirect_to_https)

解决方法

我有一个非常普通的Express应用程序-
简单的服务器逻辑,视图,许多客户端JS。我必须执行许多AJAX请求。其中一些需要通过httpS协议保护(某些不需要)。

因此,我的服务器应同时使用httphttpS。它也应该在本地计算机(正常运行nodemon)和Heroku上都可以工作。

据我了解,Heroku为您提供了一个您可以监听的端口(process.env.PORT),并通过代理处理了所有请求(因此,您的应用程序正在监听该端口,而无需担心协议-
是吗? )

所以,我说对了吗-我应该为开发机器和Heroku使用一些不同的代码吗?

喜欢

...
app = express()
...

if process.env.NODE_ENV == 'production'
  app.listen(process.env.PORT)
else
  https = require('https')
  http = require('http')
  http.createServer(app).listen(5080) # some local port
  options = {
    key: fs.readFileSync('key.pem'),cert: fs.readFileSync('cert.pem') # my self-signed files
  }
  https.createServer(options,app).listen(5443) # some different local port

这是解决这个问题的正确方法吗?

大佬总结

以上是大佬教程为你收集整理的Node.JS,Express和Heroku-如何处理HTTP和HTTPS?全部内容,希望文章能够帮你解决Node.JS,Express和Heroku-如何处理HTTP和HTTPS?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。