• IIS将http强转为https(重定向和重写)


    最近接到一个需求,客户希望无论是http还是https请求都可以访问,并且http能转换成https。研究了一圈发现iis的重定向和重写都可以实现http强转https,记录一下。

    用到的东东:

      Internet信息服务(IIS)管理器7.0

           URL重写模块安装包,下载地址x64(32也有):http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=1b8c7bd8-8824-4408-b8fc-49dc7f951a00

           SSL证书

    1、我们先来准备证书

    ①    打开IIS管理控制台,双击“服务器证书”。

    ②   在弹出的窗口中,单击右上角“导入”。

     

    ③    导入证书文件,注意申请证书时如果填写了密码,这里也要输入相关密码。

     

    2、然后绑定https,让站点可以接收http和https

    ①   右击网站站点,选择“编辑绑定”

     

    ②   在弹出的窗口中,单击“添加”按钮

     

    ③   切换类型为https,在证书下拉框中选择刚刚导入的证书,最后单击“确认”即可

    *SSL设置不要勾选

    3、接下来进入正题,记录一下重定向和重写的实现方式

    重定向

    通过url规则匹配重定向到新的url中,使用浏览器打开链接时,视觉上会看到http变成https,就好像打开http://www.baidu.com,链接会变成https://www.baidu.com

    我这边站点上挂了三个子站点,Api为接口,其他两个为后台系统、H5

    如果把重定向的规则建立在Sites上的话,下面的子站点将都适用于此规则,但是

    弊端:对api进行post请求,url被重定向到新的地址上,由于是重定向跳转,所以post请求会变成get请求,会出现问题。

    解决办法:如果不是所有都需要http强转https,重定向规则就不要设置到总站点上,哪里需要建哪里就好

    好了,我们开始创建重定向规则

    ①   安装好URL重写模块成功后,在WeiSitesWeixinPlat站点分别添加URL重写入站规则

    单机需要建立规则的站点(以WeiSites为例),双击“URL重写”,在右边窗体中选择“添加规则”,并添加一个空白规则,如下所示:

     

    ②   添加以下规则,如图所示(名字随意):

    模式:

    (.*)

    条件:

    {HTTP} 与模式匹配  ^OFF$

    {HTTP_HOST} 与模式不匹配 ^(localhost) 

    ③   填写结束之后点击右上角的“应用”即可。

     

    重定向完成,在浏览器输入你要访问的链接,如果是http,就会重定向到https了。需要做其他的重定向,修改规则就可以了,还是很强大的

     

    匹配规则取得是当前站点后面的路径,所以规则不可直接写http替换成https

    重写URL

     通过url规则匹配重写url,使用浏览器打开链接时,视觉上不会看到变化

    举个最简单的例子,现在有一个index.html,但是我希望在浏览其中输入index.himmy就能浏览到这个页面,且地址栏不会看到请求路径的变化。像之前做.aspx重写成.html还是很常见的。

    新建一个空白入站规则

    我们来测试下这个模式

    我们可以看到我们的请求被拆分了几块,{R:1}就是我们需要截取的那部分,我们继续

    操作中设置重写的url,将{R:1}和html拼接,就可以了。访问该网站时,himmy就会被替换成html,地址栏时看不到变化的。

    同理,http重写成https用重写也是可以的,看需求定了。由于http和https是请求头,所以需要和重定向一样设定,看下面。

    总站点匹配规则取得是“/”后面的路径

    子站点匹配的是站点后面的路径

    所以在实现http重写成https时,匹配规则和条件还是得按照重定向的写(名字随便)

     

    操作类型是重写

    就我此次需求而言,选择的还是重定向,因为客户要求地址栏发生变化。

    完成。

  • 相关阅读:
    Vue路由和组件分别在什么场景使用
    mybatis返回集合对象包含List<String>
    vue登录页+验证码+MD5加密
    mybatis 查询树形结构
    解决Vue Router报错 Error: Cannot find module ‘@/views/xxx‘ at webpackEmptyContext
    HttpServletRequest 在Filter中添加header
    CRM体系中的SFA(SaleForce Automation)应该怎么设计?
    Google Analytics Advertisement 广告 URL : 数据产品知识 UTM
    Win11要的TPM 2.0不一定是独立芯片,你的CPU固件可能已经支持 || 杨澜对话尹志尧:美国顶尖半导体专家华人很多,国内却奇缺
    mysql SQL注入攻击 解决Orm工具Hibernate,Mybatis, MiniDao 的 sql 预编译语句 ;解决非Orm工具JDBCTemplate的
  • 原文地址:https://www.cnblogs.com/himmy/p/9365175.html
Copyright © 2020-2023  润新知