AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 965785
Accepted
a3nm
a3nm
Asked: 2019-05-04 10:04:52 +0800 CST2019-05-04 10:04:52 +0800 CST 2019-05-04 10:04:52 +0800 CST

在不使用 HSTS 的情况下宣传 HTTPS 支持

  • 772

我有一个支持 HTTPS 的网站:http ://example.com/foo 形式的所有页面都可以作为https://example.com/foo访问(查询将返回相同的内容)。也就是说,该网站不包含任何机密信息,因此使用 HTTPS 并没有很大的好处。

我想宣传该网站的HTTPS版本的存在,但我不想强迫人们使用它:一些老客户端可能不支持它,一些高级用户可能不喜欢它,等等。为此原因我不希望服务器通过重定向来回答未加密的 HTTP 请求。也就是说,对于喜欢使用 HTTPS 的用户,必须有一种方法让他们发现支持 HTTPS。(Web 浏览器不会主动尝试将 HTTP 连接升级到 HTTPS,例如,因为某些网站通过 HTTPS 提供的内容与通过 HTTP 提供的内容不同。)

Web 服务器有没有办法在不要求客户端使用 HTTPS 的情况下宣传支持 HTTPS(即,任何请求都可以使用 HTTPS 而不是 HTTP 完成)?

我发现的唯一相关机制是Upgrade: TLS/1.0来自RFC2817的标头,它显然可以由服务器和客户端发送。但对我来说,这似乎并不明显,它是常用的还是 Web 浏览器支持的。

https
  • 2 2 个回答
  • 55 Views

2 个回答

  • Voted
  1. Andreas Rogge
    2019-05-04T11:28:06+08:002019-05-04T11:28:06+08:00

    以下不是 HTTPS 特定的,但可用于软引导客户端使用 HTTPS。

    如果您在多个 URL 下提供相同的内容(如果您允许 HTTP 和 HTTPS,就是这种情况),您应该为您提供的内容添加一个规范标签。然后,该规范标签标识访问内容的首选方式。

    让我们假设您拥有“example.com”并为此托管一个网站。可以使用 HTTP 和 HTTPS 访问该站点,包括“example.com”和“www.example.com”,主页位于“/”和“/default.html”下(无论您可能有什么历史原因)。因此可以使用访问主页

    • http://example.com/
    • http://example.com/default.html
    • https://example.com/
    • https://example.com/default.html
    • http://www.example.com/
    • http://www.example.com/default.html
    • https://www.example.com/
    • https://www.example.com/default.html

    然后,您决定默认情况下每个人都应使用https://www.example.com/default.html访问您网站的主页,但您不想添加任何重定向。

    您可以将以下标签添加到您的主页<head>部分

    <link rel="canonical" href="https://www.example.com/default.html" />
    

    这将告诉每个网络爬虫(即 google)和浏览器,它现在正在查看的内容在该 url 上可用。然后,客户端软件本身可以决定如何处理该信息。

    缺点是您必须为您提供的每个 HTML 文档添加这样的标签,并且它仅适用于 HTML。

    • 4
  2. Best Answer
    a3nm
    2022-07-30T00:28:33+08:002022-07-30T00:28:33+08:00

    作为 rel="canonical" 机制的替代方案,现在常见的解决方案似乎是使用“Upgrade-Insecure-Requests: 1”标头(显然是在发出普通 HTTP 请求时由 Firefox 和 Chrome 发送的)。这就是这些客户端宣传它们支持 HTTPS 的方式,然后服务器应将它们重定向到 HTTPS 版本。

    有关使其与 lighttpd 一起使用的问题,请参见此处。

    • 0

相关问题

  • 为 IIS 7.0 问题创建证书

  • IE6 和更高版本在 HTTPS 处理方面的差异

  • 如何模拟连接到 HTTPS 并记录握手?

  • SSL 错误:ssl_error_bad_mac_read

  • 在实时站点上使用自签名证书有什么好处?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve