Localhost何时要用HTTPS?

2022-04-22 20:52:11 浏览数 (2)

作者:Maud Nalpas

原文链接:When to use HTTPS for local development

译者:Yodonicc

使用http://localhost 进行本地开发在大多数情况下是没有问题的,除了一些特殊情况。这篇文章解释了什么时候需要用HTTPS运行你的本地开发网站。

在这篇文章中,关于localhost的说法对127.0.0.1[::1]也是有效的,因为它们都描述了本地计算机地址,也叫 "回环地址"。另外,为了使事情简单,不指定端口号。因此,当你看到http://localhost时,请将其理解为http://localhost:{PORT}http://127.0.0.1:{PORT}

总结

在本地开发时,默认使用http://localhost。Service Workers、Web Authentication API等都可以正常工作。然而,在以下情况下,你需要HTTPS来进行本地开发。

  • 在不同的浏览器中以一致的方式设置安全cookies
  • 调试mixed-content的问题
  • 使用HTTP/2及更高版本
  • 使用需要HTTPS的第三方库或API
  • 使用自定义的主机名
在本地开发中需要使用HTTPS的情况列表.png在本地开发中需要使用HTTPS的情况列表.png

<center>在本地开发中需要使用HTTPS的情况列表

</center>

如果你需要HTTPS用于上述用例之一,请查看如何使用HTTPS进行本地开发。

✨ 这就是你需要知道的一切。如果你对更多的细节感兴趣,请继续阅读!

为什么你的开发网站应该更具有安全性

为了避免遇到意想不到的问题,你希望你的本地开发网站尽可能地表现得像你的生产网站。因此,如果你的生产网站使用HTTPS,你希望你的本地开发网站表现得像一个HTTPS网站

警告:

如果你的生产环境没有使用HTTPS,请将其作为优先事项。

默认使用http://localhost

浏览器以一种特殊的方式对待http://localhost虽然它是HTTP,但它大多表现得像一个HTTPS网站

http://localhost,Service Workers、传感器API、Authentication API、支付以及其他需要一定安全保障的功能都得到了支持,并且表现得与HTTPS网站完全一样。

什么时候为本地开发使用HTTPS?

你可能会遇到这样的特殊情况:http://localhost不像一个 HTTPS 网站,或者你可能只是想使用一个非http://localhost的自定义网站名称。

在以下情况下,你需要使用HTTPS进行本地开发。

  • 你需要在本地设置一个Secure、或SameSite:none、或具有__Host前缀的cookie。Securecookie只在HTTPS上设置,而不是在所有浏览器的http://localhost。而且,由于SameSite:none__Host也要求cookie是Secure的,在你的本地开发网站上设置这种cookie也需要HTTPS。

小贴士

当涉及到在本地设置Securecookie时,并非所有的浏览器都以同样的方式行事。例如,Chrome和Safari不在本地主机上设置Securecookie,但Firefox会。在Chrome中,这被认为是一个错误。

  • 你需要在本地调试一个只在HTTPS网站上发生,而在HTTP网站上不发生的问题,甚至http://localhost,例如 mixed-content 问题。
  • 你需要在本地测试或重现HTTP/2或更新的特定行为。例如,如果你需要测试HTTP/2或更新版本的加载性能。不安全的HTTP/2或更新版本不被支持,甚至在localhost上也不被支持。
  • 你需要在本地测试需要HTTPS的第三方库或API(例如OAuth)。
  • 你没有使用localhost,而是使用一个用于本地开发的自定义主机名,例如mysite.example。通常,这意味着你已经覆盖了你的本地hosts文件。
终端编辑hosts文件的屏幕截图.jpeg终端编辑hosts文件的屏幕截图.jpeg

<center>终端编辑hosts文件的屏幕截图

</center>

代码语言:txt复制
	在这种情况下,Chrome、Edge、Safari和Firefox默认不认为`mysite.example`是安全的,尽管它是一个本地		网站。所以它不会表现得像一个HTTPS网站。