Express的HTTP重定向到HTTPS的方法

我本地测试时, HTTP使用3000端口, HTTPS使用443.

同时监听HTTP和HTTPS

参考上一篇文章Express本地测试HTTPS

转发所有GET请求

httpApp.get("*", (req, res, next) => {
  let host = req.headers.host;
  host = host.replace(/\:\d+$/, ''); // Remove port number
  res.redirect(`https://${host}${req.path}`);
});

相当于自己拼接上https的链接然后redirect. 此时浏览器会收到302 (MOVED_TEMPORARILY)状态码, 并重定向到HTTPS.

转发所有请求

httpApp.all("*", (req, res, next) => {
  let host = req.headers.host;
  host = host.replace(/\:\d+$/, ''); // Remove port number
  res.redirect(307, `https://${host}${req.path}`);
});

注意这里面有两个修改:

  1. httpApp.get 改成了 httpApp.all
  2. redirect时加上了第一个参数307 (TEMPORARY_REDIRECT)

只加上第一个修改的话, 重定向的时候不会保留Method, 导致POST请求变成了GET请求. 加上第二个修改就好了.

参考:

How do I redirect all unmatched urls with Express?
Node.js with Express: how to redirect a POST request

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Express URL跳转(重定向)的实现方法

    Express是一个基于Node.js实现的Web框架,其响应HTTP请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的301或302重定向. res.location(path) res.location(path) 下面列举了几种,设置http响应头Location的方法 res.location('/foo/bar'); res.location('http://example.com'); res.lo

  • Express的HTTP重定向到HTTPS的方法

    我本地测试时, HTTP使用3000端口, HTTPS使用443. 同时监听HTTP和HTTPS 参考上一篇文章Express本地测试HTTPS 转发所有GET请求 httpApp.get("*", (req, res, next) => { let host = req.headers.host; host = host.replace(/\:\d+$/, ''); // Remove port number res.redirect(`https://${host}${req

  • IIS7/IIS7.5 URL 重写 HTTP 重定向到 HTTPS的方法

    1.有SSL证书,或者新购.目前很多免费的SSL证书 2.IIS7 / IIS 7.5 下绑定 HTTPS 网站 3.下载安装URL重写模块:Microsoft URL Rewrite Module 32位:http://download.microsoft.com/download/4/9/C/49CD28DB-4AA6-4A51-9437-AA001221F606/rewrite_x86_zh-CN.msi 64位:http://download.microsoft.com/download

  • .Net Core和jexus配置HTTPS服务方法

    花了几天时间,看了好多篇博客,终于搞定了网站的HTTPS服务,借此写篇博客,来让有需要的朋友少走弯路. 一.环境介绍 1.Linux下在Docker容器中部署好了一个网站,该网站需要通过外部提供程序访问微软的登录平台,利用的是OAuth2.0协议,因此要求必须要使用SSL服务,也使得网站必须要加入HTTPS服务. 2.容器外,宿主机上通过jexus做端口转发.(本没打算用到jexus,但是看到情形不对,还是必须把它拉入进来) 3.HTTPS服务需要证书,通过在腾讯云上申请免费证书https://

  • Node.js + express实现上传大文件的方法分析【图片、文本文件】

    本文实例讲述了Node.js + express实现上传大文件的方法.分享给大家供大家参考,具体如下: 对于大文件的上传我们首先要引入一个叫做 multer 的库: npm install --save multer 关于这个库,大家可以查阅官方文档: 点击跳转 https://www.npmjs.com/package/multer 我们先将库引入我们的项目中: var multer = require('multer') var upload = multer({ dest: 'upload

  • IIS与APACHE实现HTTP重定向到HTTPS

    IIS7 从微软的官方网站下载HTTP重写模块,安装完毕之后重启IIS服务,之后打开IIS控制台,发现多了一个组件,双击"URL重写",在右边窗体中选择"添加规则",并添加一个空白规则,给规则自定义一个名字(名称自便),比如我这里叫"redirect to HTTPS",模式为:(.*),添加一个条件,条件输入为 {HTTPS},与模式匹配,模式为 ^OFF$,然后配置操作,操作类型为:重定向,重定向到URL为:https://{HTTP_HOS

  • Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法

    前言 如今,企业级应用程序的高性能安全加密的常见场景是同时支持HTTP和HTTPS两种协议,这篇文章考虑如何让Spring Boot应用程序同时支持HTTP和HTTPS两种协议.Spring Boot的web容器已经有容器可以支持HTTP2了,这个例子中选择了Undertow高性能服务器作为Spring Boot的web容器. What-什么是HTTP2 HTTP2是HTTP协议自1999年HTTP1.1发布后的首个更新,主要基于SPDY协议.由互联网工程任务组(IETF)的 Hypertext

  • node.js express捕获全局异常的三种方法实例分析

    本文实例讲述了node.js express捕获全局异常的三种方法.分享给大家供大家参考,具体如下: 场景 express的路由里抛出异常后,全局中间件没办法捕获,需要在所有的路由函数里写try catch,这坑爹的逻辑让人每次都要多写n行代码 官方错误捕获中件间代码如下 app.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send('Something broke!'); }); 测

  • 详解nginx服务器http重定向到https的正确写法

    http重定向到https使用了nginx的重定向命令.那么应该如何写重定向?之前老版本的nginx可能使用了以下类似的格式. rewrite ^/(.*)$ http://domain.com/$1 permanent; 或者 rewrite ^ http://domain.com$request_uri? permanent; 现在nginx新版本已经换了种写法,上面这些已经不再推荐. 下面是nginx http页面重定向到https页面最新支持的写法: server { listen 80

  • JavaScript实现强制重定向至HTTPS页面

    有时候需要把网页强制切换成HTTPS,即使用户已经访问了HTTP的版本.原因可能是你不想让用户使用HTTP来访问,因为它不安全.要做到这个很简单,如果不想用PHP或者Apache的mod_rewrite来做这件事,用Javascript也可以.代码如下: <script type="text/javascript"> var targetProtocol = "https:"; if (window.location.protocol != target

  • linux tomcat配置https的方法

    创建.keystore [root@centos apache-tomcat-6.0.37]# keytool -genkey -alias tomcat -keyalg RSA -keystore /root/tomcat/apache-tomcat-6.0.37/conf/.keystore 输入keystore密码: 再次输入新密码: 您的名字与姓氏是什么? [Unknown]: free4lab 您的组织单位名称是什么? [Unknown]: free4lab 您的组织名称是什么? [U

随机推荐