# 在帖子中无法使用URL端口号嵌入媒体

**URL:** <https://meta.discourse.org/t/cannot-use-port-number-in-url-to-embed-media-in-post/241742>\
**Category:** Self-hosting\
**Tags:** embedding\
**Created:** [2022 年10 月 12 日 22:06 UTC](https://meta.discourse.org/t/cannot-use-port-number-in-url-to-embed-media-in-post/241742 "2022-10-12T22:06:47Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

作者： ![John\_Walker](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/john_walker/32/277251_2.png) [@John\_Walker](https://meta.discourse.org/u/John_Walker)\
发布日期： [2022 年10 月 12 日 22:06 UTC](https://meta.discourse.org/t/cannot-use-port-number-in-url-to-embed-media-in-post/241742/1 "2022-10-12T22:06:47Z")

</div>

为了让用户能够托管他们在 Discourse 帖子中嵌入的视频、音频文件等，我设置了一个 Apache 服务器，与运行 Discourse 的 Nginx 并行运行。Apache 服务器在 8008 端口上运行 http:，在 591 端口上运行 https:（IANA 端口保留用于 http-alt）。这工作正常，并且可以通过在 URL 中指定端口号从浏览器访问服务器上的内容，例如：

`https://scanalyst.fourmilab.ch:591/video/f9_from_drone_ship_2022-10-12.mp4`

但是，如果您尝试在 Discourse 帖子中嵌入此 URL，它会失败并显示：

> 抱歉，我们无法为此网页生成预览，因为找不到服务器 ‘scanalyst.fourmilab.ch’。预览将仅显示一个链接。

如果我运行 `tcpdump` 并监视 DNS 流量，我看到在拒绝此 URL 时_没有_发送任何内容。它在从未发出 DNS 查询的情况下拒绝它。如果我将 URL 中的端口号更改为 443（https: 的默认端口），它会正常发出 DNS 查询，但嵌入当然会失败，因为 Apache 服务器未在该端口上监听，并且 Discourse 服务器不知道如何处理该 URL。我在 Discourse 文档中没有看到任何表明嵌入 URL 可能不允许指定端口号的内容。

查看源代码，我在 `lib/final_destination.rb` 的第 362 行的 `validate_uri_format` 函数中发现了一个测试，该测试如下所示：

```plaintext
    return false if @uri.scheme == 'https' && @uri.port != 443

```

这似乎拒绝了使用非 443 端口的 https: URL。这似乎解释了我所看到的，所以我注释掉了这一行，但没有任何区别，即使在重新启动 Discourse 之后。当帖子出现在网站上，嵌入被转换为文本链接时，点击文本链接可以正确显示视频，所以唯一的问题是未能将其识别为嵌入并围绕它包装内联播放器。

此时我的问题是：

- Discourse 帖子中的嵌入 URL 是否打算使用非标准端口号？
- 如果是，是什么原因导致这些 URL 被拒绝？
- 有什么方法可以让它们工作吗？

2017 年 3 月，这里曾就此问题进行过讨论，涉及以下两个帖子：

- [为给定 IP 的可嵌入主机指定端口会导致错误](https://meta.discourse.org/t/specifying-port-for-embeddable-host-given-an-ip-results-in-error/59209)
- [修复：允许嵌入主机 IP 的端口 #4759](https://github.com/discourse/discourse/pull/4759)（在 GitHub 上）

这些帖子暗示问题已经修复，但今天在 2.9.0.beta10 上不起作用。

感谢您对此事的任何见解和/或协助。

---

_[View the full topic](https://meta.discourse.org/t/cannot-use-port-number-in-url-to-embed-media-in-post/241742)._
