前端- 在本地环境使用 HTTPS 协议调试

一、问题

我们线上环境本来是用的 https 协议,但是其中一个功能接口需要其他部门提供,他们返回的是http协议,这就导致了一些问题。

Mixed Content: The page was loaded over HTTPS,blocked the content must be served over HTTPS

这是因为https协议的缘故,出现了请求被拦截;

其实是浏览器不允许在https页面里嵌入http的请求,现在高版本的浏览器为了用户体验,都不会弹窗报错,只会在控制台上打印一条错误信息。

二、解决方法

  1. 在主页面的head中加入下面代码(将调用的http请求升级成https请求并调用)
    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
    
  2. 后端本地处理一下,将其他服务器的http请求在本地转成https请求再给前端

不过第一个方法会将所有接口都变成https请求,要注意一下这个的风险。

三、调试环境使用 HTTPS

既然有了解决办法,那么就要先在本地调试环境实验一下,需要先将调试环境改成 https 协议

其实在本地配置 HTTPS 非常快捷方便,有现成的成熟工具可以使用。大致分两步:

  1. 生成证书。
  2. 修改项目的启动服务。
生成证书

我们将使用 mkcert 这个零配置的命令行工具生成证书。

brew install mkcert
brew install nss

其中,nss 是可选的,如果不使用或者不需要测试 Firefox,那么可以不安装 nss。

接着我们创建一个目录来存放证书,比如 ~/.cert:

mkdir -p ~/.cert

自动生成证书:

mkcert -key-file ~/.cert/key.pem -cert-file ~/.cert/cert.pem "localhost"

让系统信任生成的证书:

mkcert -install

因为需要在系统中安装本地 root CA,所以运行上述命令会请求 sudo 权限。只有初次生成证书时需要运行这个命令,后续通过 mkcert -key-file生成的证书会自动被系统信任。

修改项目的启动服务
http-server

纯静态项目可以通过 http-server 进行调试,要切换至 HTTPS 模式,只需加上三个命令行参数:

npx http-server -S -C ~/.cert/cert.pem -K ~/.cert/key.pem
React

通过 Create React App 创建的 React 项目,只需在启动服务时指定几个环境变量就可以切换至 HTTPS 模式:

cd [projectName]
HTTPS=true SSL_CRT_FILE=$HOME/.cert/cert.pem SSL_KEY_FILE=$HOME/.cert/key.pem npm start

其他

有时候可能会遇到无法打开 HTTPS 链接,可能是因为有的https没有经过验证,属于无牌证书,所以遭到了google拒绝。可以经过一些设置,强制chrome使用https的方式打开。可在参考链接中查看相关资料

a

参考链接:
在本地开发调试环境使用 HTTPS
https请求报错block:mixed-content问题的解决办法
Upgrade-Insecure-Requests请求头
设置chrome打开https链接

### 回答1: 你好,我可以回答你关于 http-server 的问题。http-server 是一个简单的零配置命令行 HTTP 服务器,它可以让你快速地在本地启动一个静态文件服务器。你可以使用它来快速共享文件、测试网页等。希望我的回答能够帮到你。 ### 回答2: http-server是一个简单的命令行工具,用于在本地快速搭建一个基于HTTP协议的静态文件服务器。它支持Node.js环境下运行,通过npm安装后可以方便地在终端中使用使用http-server可以快速地在本地搭建一个简单的Web服务器,方便开发人员进行本地调试或者展示静态页面。只需在终端中执行"http-server"命令,并在当前目录下启动一个默认端口为8080的服务器。如果需要指定端口号,可以使用"-p"或者"--port"参数,例如"http-server -p 3000"。此外,还可以通过"-a"或者"--address"参数指定服务器的IP地址,默认为0.0.0.0。 http-server还支持一些其他的选项和功能,例如可以通过"-o"或者"--open"参数在启动服务器后自动在浏览器中打开页面。也可以使用"-c"或者"--cache"参数来设置缓存时间,以提高访问速度。此外,http-server还支持HTTPS协议,可以通过"--ssl"参数启动HTTPS服务器,并指定相应的证书和密钥。 使用http-server非常简单,对于前端开发人员来说是一个十分方便的工具。通过http-server可以快速地搭建一个本地服务器,以便进行网页调试、文件共享等需求。同时它还提供了一些额外的选项和功能,使得搭建服务器更加灵活和方便。总之,http-server是一个简单而强大的工具,对于前端开发人员来说是不可或缺的一款软件。 ### 回答3: http-server是一个基于Node.js的开源静态文件服务器,它允许我们通过浏览器访问本地文件。 使用http-server可以非常方便地搭建一个临时的本地服务器,可以用于展示静态网页、分享文件、本地测试等应用场景。这个服务器可以启动在本地的任何一个文件夹中,将该文件夹下的文件在浏览器中以HTTP的形式展示出来。 使用http-server非常简单,我们只需要在终端中进入到要展示的文件夹路径,然后输入"npx http-server"命令,服务就会在默认的8080端口上启动。我们可以在浏览器中输入http://localhost:8080来访问本地文件。 http-server提供了一些额外的功能,例如支持指定端口号、自定义错误页面等。我们可以通过命令行参数来进行配置。例如,我们可以使用"-p"参数来指定端口号,使用"-o"参数自动在浏览器中打开网页。 此外,http-server还提供了一些缓存控制和安全功能,可以防止未经授权的访问。我们也可以在命令行中使用用户名和密码进行身份验证。 总的来说,http-server是一个简单易用的工具,它能够帮助我们快速搭建一个本地服务器,方便访问和共享文件。无论是开发者进行本地测试,还是需要在本地展示网页或分享文件,http-server都是一个很好的选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值