传出的部分链接 -> https (即时)? - 不是 http

是否有办法让后端将帖子中的所有部分链接(example.com)转换为https链接(https://www.example.com)??

因为它们似乎被转换成了http://链接,这会导致很多用户点击帖子中的链接时,http://example.com的出站请求失败,从而产生各种混乱。

(或者,检查生成的目标地址并修改为正确的协议以到达那里?)

谢谢,这是我的第一个问题,如果重复了很抱歉,但我找不到任何简洁的答案。
米奇

1 个赞

似乎是时候将这些链接默认设为 https 了。这可能是一个功能请求。

不。有很多网站在使用 http,因为它们不需要 SSL。

这又将是一项简单的搜索和替换工作吗?还是我又一次误解了一切?

不理智的恐慌发作

另外,我担心一种边缘情况,即 Discourse 使用自己的 VPS,而它前面是另一个带有反向代理的 VPS。这些通常会不带 SSL 地相互通信。

但这完全是另一种情况,对吧?但我开始有点紧张,每次都有一些默认的东西可以改变我熟悉的缩写……

我认为你关于那些网站不需要 https 的说法是错误的。现在没有任何理由不让你的网站安全。

不过,我关于这应该是一个功能请求的说法似乎是错误的。浏览器而不是 Discourse 应该负责强制使用 https。

我相当确定现代浏览器默认情况下会优先使用 HTTPS 而不是 HTTP。
此外,许多网站服务器端会重定向到 HTTPS 或使用 HSTS 标头。

2 个赞

当我们谈论现实时,我认为我没有错。

在服务器之间使用SSL保护连接的必要性,当数据不包含任何需要保护的内容时,值得另开一个话题讨论。但在这里完全是离题的。

但是告诉用户抱歉,你不能链接,因为第三方没有使用端口443,这是一个坏主意。这不是管理员的工作,甚至也不是Discourse的工作,去说别人应该做什么或必须做什么。

是的,如果它在那里的话。而且一些家用路由器/调制解调器配置为只使用https,这真的很烦人。因为并非所有网站都遵循Google希望在任何地方都使用SSL的意愿,而且部分原因是许多平台提供使用http的旧链接,而那些愚蠢的盒子无法重写URL。

所以在任何功能讨论之前,应该先有一个元话题:论坛平台是否有责任强制对出站链接使用SSL。

之后,技术解决方案就相当容易了,我估计——但同样,我不是开发人员。

但回到话题。

那么搜索和替换不是一个紧急的解决方案?但我现在不明白了…………真正的问​​题是Discourse是否会自动形成链接,如果只给出一个纯粹的URL?如果是这样,那么我稍微退一步,是的,它应该自动使用https——但必须是可编辑的。

检查是否可以使用仅目标页面的头部来检查 http(以及具有类似功能的 https),代码摘自:

def check_http_url(url):
    HTTP_URL = f'http://{url}'
    try:
        HTTP_URL = urlparse(HTTP_URL)
        connection = HTTPConnection(HTTP_URL.netloc)
        connection.request('HEAD', HTTP_URL.path)
        if connection.getresponse():
            return True
        else:
            return False
    except:
        return False

所以,有了这个(如果我没记错的话,翻译成 Ruby),Discourse 后端就可以找出帖子中给出的部分链接的目标是 https 还是 http,然后(优先选择 https)为用户打开正确的链接?