使用本地自签名证书为 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)

大家都在看

  • SpringSecurity 自定义表单登录

    SpringSecurity 自定义表单登录 本篇主要讲解 在SpringSecurity中 如何 自定义表单登录 , SpringSecurity默认提供了一个表单登录,但是实际…

    技术杂谈 2023年7月11日
    047
  • 快速创建测试数据集,批量生成,导出多种数据格式

    为任何开发、测试或演示目的生成大量、异构、真实的数据,而不是仅仅通过复制和粘贴创建重复的不切实际的文本字段。 官网地址:http://www.redisant.cn/da 主要特点…

    技术杂谈 2023年7月23日
    084
  • 备份一下自己的博客主题

    我其实来博客园的时间不是很久,看了一下后台也就2022-07-12,之前也是用node.js搭建hexo博客部署在github.io上,只不过github在国内的访问速度比较慢,后…

    技术杂谈 2023年6月21日
    078
  • Go找不到本地模块问题排查

    https://blog.csdn.net/Joker_Jack/article/details/115013067 Original: https://www.cnblogs.c…

    技术杂谈 2023年5月31日
    071
  • 零成本搭建个人博客之迁移Pages和域名

    在上文[零成本搭建个人博客之搭建篇]中,我将Hugo博客搭建到 Github Page上,后来考虑到用 Cloudflare cdn加速,干脆就把博客站点迁移到Cloudflare…

    技术杂谈 2023年6月21日
    0103
  • 日常踩坑_添加了@Transactional注解后,事务不生效

    故事梗概 事情是这样的,在使用Jpa的saveAll方法的时候,发现saveAll方法会进行先查询后保存的操作,但我只想要保存,不想要查询关于saveAll的重写 可以这样用 @P…

    技术杂谈 2023年7月25日
    075
  • 面向对象ooDay2

    构造方法到底要不要参数,要看对象的数据能不能写死 如果对象的数据都一样,意味着可以写死,就不需要传参。 如果对象的数据都不一样,意味着不能写死,那就需要传参。 Original: …

    技术杂谈 2023年7月11日
    064
  • 统一NET Core WebApi返回结果

    private static readonly string[] Summaries = new[] { "Freezing", "Bracing&q…

    技术杂谈 2023年5月31日
    076
  • JWT的验证(转载)

    JWT的验证流程分为两个步骤: 1.签名验证 当接收方接收到一个JWT的时候,首先要对这个JWT的完整性进行验证,这个就是签名认证。它验证的方法其实很简单,只要把header做ba…

    技术杂谈 2023年5月31日
    072
  • 敏捷培训有感

    一周前参加了个关于敏捷的培训,今天回想起来,记忆最深的是两个游戏环节。 游戏一 组装 10 只同样小狗,每只小狗需要 5 块积木,流水线上 5 个人,每人负责固定的一块积木的拼接。…

    技术杂谈 2023年7月11日
    047
  • 多级缓存-Windows安装OpenResty

    2、解压解压放在D:\dev\openresty-1.19.9.1目录下 nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效…

    技术杂谈 2023年5月31日
    089
  • 什么是死锁?如何避免死锁?

    概念 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 我和同学都打扫卫生,我拿着扫帚…

    技术杂谈 2023年7月25日
    056
  • 几十套业务系统集中统一授权管理、几十万账户同步多系统实现经验分享

    由于这几年互联网电商的快速崛起,快递行业也进入了高速发展的绝好成长期。随着全社会强劲需求快递公司业绩年年攀新高。快速发展的快递公司需要有强大的IT信息系统,硬件设备基本上款到了货也…

    技术杂谈 2023年5月31日
    077
  • redux常规教程

    var totalNum = taskinfo.reduce((acc, cur) => { return (acc || 0) + (cur?.totalNum || 0)…

    技术杂谈 2023年6月1日
    081
  • 时空的乐章

    广义相对论之前,时空仿佛是一个舞台,物理过程像戏剧一样千变万化,舞台却是不变的,广义相对论首次将时空变成了戏剧的一部分,变成了一个动力学概念,时空不再是不变的了,而在物理学上,几乎…

    技术杂谈 2023年5月31日
    066
  • MyBatis学习大全(狂神秦疆版)

    一、 MyBatis 1.什么是Mybaits 概念:MyBatis 是一款优秀的 持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JD…

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