http 和 https_Golang设置https访问,以及http如何重定向到https

da9b5020dae2e60e1a218c50de3eefe8.png

设置https访问:

初始代码为http监听:

func main() {  server := &http.Server{    Addr:           ":8080",    ...  }  go func() {    if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {      log.Fatalf(err, "Listen: %s")    }  }()    ...}

变为https监听:

func main() {  server := &http.Server{    Addr:           ":8080",    ...  }  go func() {    if err := server.ListenAndServeTLS("conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed {      log.Fatalf(err, "Listen: %s")    }  }()  ...}

其中ListenAndServeTLS方法的两个参数为SSL证书的下载文件,网上有专门生成证书的命令或工具,这种情况得到的证书,虽然可以访问https,但证书无效,浏览器地址栏提示不安全。

腾讯云可以免费申请SSL证书,但需要对填写的域名进行验证,如果不是腾讯云的域名,还需要去域名对应解析商进行验证,所以最好使腾讯云的域名。

新用户在腾讯云花1块钱买了个域名,自带SSL证书,域名审核通过后,申请免费SSL证书,填写该域名,选择自动DNS验证,验证通过后,即可下载证书。从下载内容Apache文件夹中取出一个.crt文件和.key文件存放本地,作为server.ListenAndServeTLS()函数的两个参数,参数传文件路径即可。

此时启动项目,访问:https://localhost:8080 可行,访问:http://localhost:8080 不可行。

https访问,提示不安全,证书无效:

如图:

b82152e19a690a8fb2733e10c4a4d47d.png

这种情况,只需把ip替换成证书对应的域名即可,前提是域名已经和你的服务器ip进行了解析。这里我用刚申请的域名和我本地电脑ip进行了解析,用域名进行访问后,显示正常,不再提示不安全:

d6639419635c162801422b16413ac4a8.png

http重定向到https:

此处结合Gin框架处理,http重定向到https,用到第三方包:

go get github.com/unrolled/secure

利用secure包写一个中间件,设置http重定向到https具体哪个url上:

//设置http重定向到httpsfunc TlsHandler() gin.HandlerFunc {  return func(c *gin.Context) {    secureMiddleware := secure.New(secure.Options{      SSLRedirect: true,      SSLHost:     "dubinyang.xyz:8081",    })        err := secureMiddleware.Process(c.Writer, c.Request)    if err != nil {      return    }        c.Next()  }}

main函数里同时监听http和https:

func main() {  g:= gin.Default()  //加载中间件  g.Use(TlsHandler())  server := &http.Server{    Addr:           ":8080",    ...  }    //监听http  go func() {    if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {      log.Fatalf(err, "Listen: %s")    }  }()  //监听https  go func() {    //端口不可重复监听    //此处更换8080端口为8081,直接用gin的RunTLS()函数进行监听    //继续用server的ListenAndServeTLS()函数效果一样,建server2,Addr变为为":8081"即可    if err := g.RunTLS(":8081", "conf/server.crt", "conf/server.key"); err != nil && err != http.ErrServerClosed {      log.Fatalf(err, "Listen: %s")    }  }()  ...}

如果http监听80端口,https监听443端口,两个端口都可隐藏,重定向时地址栏不会显示端口变化。

微信公众号:李田路口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点分布式文件存储系统____分布式文件存储系统简介

盘点分布式文件存储系统 在项目的数据存储中,结构化数据通常采用关系型数据库,非结构化数据(文件)的存储就有很多种方式,服务器本地存储、Nas挂载、ftp等等,今天就来盘点一下,分布式文件存储系统…

常见分布式文件存储介绍、选型比较、架构设计

数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案、选型、架构设计等。 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,TB,PB,ZB.挖掘…

为什么python工程师掌握这些就够了_Python工程师薪资飙升,Python这些技能你掌握了吗...

Python的火热,也带动了工程师们的就业热。那么,Python的市场需求和工程师待遇到底如何呢?今天我们来看看具体数据。2019年招聘python工程师薪资飙升,Python这些技能你掌握了吗?Python岗位和待遇和要求怎么样?下面从招…

canvas js 绘图插件_Canvas专题—绘制柱状图(2)

目标:在我们了解过前两章节的知识点以后,为了把知识点进行连结,拓展,现在我们做一个图表吧。看一个echartst图表当今Canvas库有很多供我们选择,比如,echarts在很大程度上能够提高我们的工作效率&#xff0c…

界面优美的linux,Ubuntu 11.04新版发布 诠释精美用户界面

主要改进内容如下:Unity界面在Alpha 3中进行了重大改进,重新设计了Dash面板的功能,可以按类别显示应用程序,此外还包括更好的搜索过滤、支持全屏以及其他视觉效果的提升。Ubuntu 11.04 Alpha 3升级了安装程序,用户如今…

springboot 使用 minio

springboot 使用 minio yml 配置 yml 配置 # ↓↓↓↓↓↓ MinIO文件服务器 ↓↓↓↓↓↓ minio:url: http://114.67.110.190:9001accessKey: minioadminsecretKey: minioadminbucketName: zpfmaven: <dependency><groupId>io.minio</groupId><artifa…

立创EDA

绘制PCB流程&#xff1a; 画原理图 ——> 画原理图 ——> 布线 ——> 铺铜 器件&#xff1a; 器件就是一个个不同的元件&#xff0c;每个元件不同的引脚有不同的功能&#xff0c;但有可能封装是一样的&#xff0c;所以将器件和封装练习起来&#xff0c;才能将…

python中sorted函数的用法_Python3 中sorted() 函数的用法

描述 sorted() 函数对所有可迭代的对象进行排序操作。 语法 sorted(iterable, keyNone, reverseFalse) iterable – 可迭代对象。 key – 主要是用来进行比较的元素&#xff0c;只有一个参数&#xff0c;具体的函数的参数就是取自于可迭代对象中&#xff0c;指定可迭代对象中的…

springboot整合minio最新版

第一步&#xff1a;查找minio最新依赖&#xff0c;通过maven查询网站查询,这搜索框输入minio&#xff0c; 也可以查看MinIO官网https://docs.min.io/docs/java-client-quickstart-guide.html 如下: 点击minio进入查看maven依赖&#xff0c;可以看到最新版为8.3.4 <dependen…

学生学籍管理系统python_使用Python实现 学生学籍管理系统

大家好&#xff0c;今天跟大家分享一个用Python实现的学生学籍管理系统&#xff1a; 该代码主体由五个函数组成&#xff1a; 1.add_stu() 添加 2.del_stu() 删除 3.print_stu()打印 4.exit_stu() 退出 5.system() 主函数 1.add_stu() 此段函数作用&#xff1a;把输入的值存入字…

Okhttp使用详解

在Android开发中&#xff0c;发送HTTP请求是很常见的。SDK中自带的HttpURLConnection虽然能基本满足需求&#xff0c;但是在使用上有诸多不便&#xff0c;为此&#xff0c;square公司实现了一个HTTP客户端的类库——Okhttp 。 Okhttp是一个支持HTTP 和 HTTP/2 的客户端&#x…

如何开发rest接口服务_如何简化网络请求接口开发

日常开发中&#xff0c;需要大量和后端对接接口&#xff0c;很容易写出大量的模板代码&#xff0c;比如把对接口的请求放到组件内&#xff0c;或者虽然有数据访问层&#xff0c;但是有大量 get&#xff0c;post 方法的调用&#xff0c;传参的字符串拼接&#xff0c;异常处理等等…

质量属性效用树例子_数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

HT 是啥&#xff1a;Everything you need to create cutting-edge 2D and 3D visualization.这口号是当年心目中的产品方向&#xff0c;接着就朝这个方向慢慢打磨&#xff0c;如今 HT 算是达到了这样的效果&#xff0c;谈不上用尽洪荒之力&#xff0c;但我们对产品结果很满意&a…

linux vi 出现下划线,Vim高亮当前行(显示为下划线)的解决方案

最近配置Vim&#xff0c;由于以前的vimrc早已丢失&#xff0c;只好重新配置一份&#xff0c;此为题外话&#xff0c;略过不提…在Vim中&#xff0c;可以选择开启高亮当前行&#xff0c;这是一个很不错的特性。开启它也很简单&#xff0c;只需要在vimrc中加入这么一行&#xff1…

springBoot 简单优雅是实现文件上传和下载

前言 好久没有更新spring Boot 这个项目了。最近看了一下docker 的知识&#xff0c;后期打算将spring boot 和docker 结合起来。刚好最近有一个上传文件的工作呢&#xff0c;刚好就想起这个脚手架&#xff0c;将文件上传和下载整理进来。 配置 在application.properties 中增…

C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】

到现在为止&#xff0c;C 仍然是计算机编程领域的经典语言之一&#xff0c;C 17 标准在2017上半年已经探讨确定。本期我们汇集了编程专家——祁宇(《深入应用 C 11》作者&#xff0c;C 开源社区 purecpp.org 创始人)的多年心得小结&#xff0c;并具体介绍了 C 17 最新标准中值得…

SpringBoot+VUE 前端加密算法 RSA+DES

前言 为了提高用户登陆的安全性&#xff0c;公司准备整理一份相对安全的登陆模式。 想法 主流加密算法 主流加密算法 &#xff08;一&#xff09;对称加密AES ,其特点是&#xff1a;算法简单&#xff0c;加密速度快&#xff1b; &#xff08;二&#xff09;非对称加密方式&…

spring cloud微服务_年后进大厂,必备这份微服务面试题:Dubbo+SpringBoot+Cloud

Dubbo面试题Dubbo与DubboX区别Dubbo中zookeeper做注册中心&#xff0c;如果注册中心集群都挂掉&#xff0c;发布者和订阅者之间还能通信么&#xff1f;Dubbo中有哪些角色&#xff1f;Dubbo在安全机制方面是如何解决的Dubbo执行流程&#xff1f;Dubbo支持的协议有哪些&#xff1…

全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过

技术更新日新月异&#xff0c;对于初入职场或者刚开始学习的同学来说&#xff0c;经常会困惑该往那个方向发展&#xff0c;这一点所有刚开始学习的人基本都有这个体会的。刚开始学习 Java 那会&#xff0c;最大的问题就是不知道该学什么&#xff0c;以及学习的顺序&#xff0c;…

cookie、Session、Token、sessionStorage、localStorage简介__Token放在 cookie, sessionStorage 和 localStorage中区别

cookie、Session、Token、sessionStorage、localStorage简介 cookie 是一个非常具体的东西&#xff0c;只得是浏览器里永久存储的一种数据&#xff0c;是浏览器实现的一种数据存储功能。Cookie在计算机中是个存储在浏览器目录中的文本文件&#xff0c;当浏览器运行时&#xf…