使用本地自签名证书为 React 项目启用 https 支持

简介

现在是大前端的时代,我们在本地开发 React 项目非常方便。这不是本文的重点,今天要分享一个话题是,如何为这些本地的项目,添加 https 的支持。为什么要考虑这个问题呢?主要有几个原因

  1. 如果该项目需要调用下层的 API, 并且该 API 是用 https的,则要求前端项目也用 https
  2. 如果你为 Teams 或者 Office 开发应用,他们要求这些应用必须用 https

本文参考了官方文档 https://create-react-app.dev/docs/using-https-in-development/,并且用更加详细的步骤带领大家完成实验。

创建并React项目

npx create-react-app --template typescript testapp
cd testapp
npm start

我们会看到再熟悉不过的默认的React项目的那个模板效果,默认在 http://localhost:3000 这个地址访问

使用本地自签名证书为 React 项目启用 https 支持

如果你想启用 https,其实有一个简单的办法就是用 ($env:HTTPS = "true") -and (npm start) 替换上面的那句 npm start即可

使用本地自签名证书为 React 项目启用 https 支持

请注意,你现在已经可以用 https://localhost:3000 去访问它了。但很显然这个证书是无效的。下面就继续来学习如何创建自定义证书并且用它来绑定到我们的应用端口上来。

安装自签名证书工具

推荐使用 mkcert,我一般会用 choco 这个工具来安装,请参考我的步骤

请在管理员模式下打开Powershell

Set-ExecutionPolicy Bypass -Scope Process -Force; 
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

choco install mkcert -y

安装证书信任机构(CA)

mkcert -install

创建证书

创建一个用来保存证书文件的目录
mkdir -p .cert
可以一次性为多个域名创建证书,这个非常强大
mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem "localhost" "dev.teamsapp.local"

使用证书来启动当前项目

在当前项目根目录下面创建一个 .env 文件,填写如下的内容

HTTPS=true
SSL_CRT_FILE=.cert/cert.pem
SSL_KEY_FILE=.cert/key.pem

然后,直接还是运行 npm start ,你会发现默认打开的 https://localhost:3000 已经带有合法的证书了

使用本地自签名证书为 React 项目启用 https 支持

Original: https://www.cnblogs.com/chenxizhang/p/16244358.html
Author: 陈希章
Title: 使用本地自签名证书为 React 项目启用 https 支持

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551343/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux常用命令整理:文件目录管理

    据说,你要对Linux文件做的事情,98%都记录在这篇文章里了。 1.ls命令 最常见的命令,相信刚进入linux命令行界面的时候,都要用这个命令看看当前目录下都有哪些文件吧。 名…

    技术杂谈 2023年7月24日
    067
  • 浅谈深度学习的落地问题

    前言 深度学习不不仅仅是理论创新,更重要的是应用于工程实际。 关于深度学习人工智能落地,已经有有很多的解决方案,不论是电脑端、手机端还是嵌入式端,将已经训练好的神经网络权重在各个平…

    技术杂谈 2023年7月11日
    065
  • SpringBoot映射虚拟图片路径

    各位看官可以关注博主个人博客,了解更多信息。作者:Surpasser链接地址:https://surpass.org.cn 前言 ​ 我的毕设项目中涉及到了多媒体表单提交,以我本来…

    技术杂谈 2023年7月25日
    067
  • [Python]-pdb模块-单步调试

    使用pdb模块辅助python调试。 import pdb 断点模式 在需要调试的语句前设置断点,加入这行代码: pdb.set_trace() 程序运行到这就会进入断点调试模式。…

    技术杂谈 2023年7月10日
    090
  • Transformer学习

    模型结构 Encoder Encoder是有N=6层的一个整体。是这6层按顺序走下来的一个整体。每层有两个子层。分别是多头自注意力和全连接前馈网络。对于每个子层,先采用残差连接,后…

    技术杂谈 2023年6月21日
    097
  • vue-router各个属性的作用及用法

    原文:https://www.cnblogs.com/goloving/p/9211358.html vue-router是vue单页面开发的路由,就是决定页面跳转的! Props…

    技术杂谈 2023年7月25日
    059
  • 大数据各组件重要技术点总结

    针对大数据组件特点归纳如下: 存储:HDFS,hudi,Hbase, Kafka 计算引擎:Spark,Flink OLAP: Doris 调度: Yarn 下面主要从架构、组件原…

    技术杂谈 2023年7月11日
    057
  • vue 版本查看

    如何查看vue版本号? 方法1、全局查看vue版本号 npm info vue方法2、局部(当前项目)查vue版本号 npm list vue version方法3、此外还可以通过…

    技术杂谈 2023年7月11日
    079
  • 记录一下代码模版

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/qscqesze/p/15467312.htmlAuth…

    技术杂谈 2023年6月1日
    081
  • 开源漏洞扫描器合集

    =========================================== =========================================== 分布…

    技术杂谈 2023年5月31日
    076
  • Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)

    打开Qt帮助文档,会看到有关于QImage的描述如下:The QImage class provides a hardware-independent image represen…

    技术杂谈 2023年5月31日
    0108
  • 尝试理解Linux容器进程与宿主机共享内核的具体含义

    背景 近期接触容器技术时,经常看到各类比较容器与虚拟机区别的文章中会提到:容器是共享宿主机的内核,而虚拟机则是拥有自己独立的内核,所以不可能在Linux上用容器运行windows,…

    技术杂谈 2023年6月21日
    098
  • 在线网盘ZFile 安装

    目录结构 启动&停止&&重启 ~/zfile/bin/start.sh ~/zfile/bin/stop.sh ~/zfile/bin/restart.sh…

    技术杂谈 2023年5月31日
    097
  • k8s整合Traefik2入门(一)

    k8s整合Traefik入门(一) 安装 首先下载helm,根据自己的k8s版本来选择相应的版本 [root@k8s-master1 ~]# tar -zvxf helm-v3.6…

    技术杂谈 2023年5月31日
    0105
  • Postfix邮件发送小问题总结

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/kerrycode/p/15321413.htmlAut…

    技术杂谈 2023年5月31日
    078
  • 我理解的用户体验

    用户体验是什么? 用起来很爽快。这就是用户体验。 用户体验是一系列的心理学,美学,经验总结而成的一门艺术。 专用名称是UED User Experience Design(用户体验…

    技术杂谈 2023年6月21日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球