为什么 github 页面存储库中需要 CNAME 文件,即使我在 DNS 提供商处有 CNAME 记录?

Why is CNAME file needed in github pages repository even I have the CNAME record at DNS provider?

我很困惑为什么我的 github 页面存储库中也需要 CNAME 文件?为什么 CNAME 需要在我的域提供商和 github 页面上完成两次?

这些东西如何协同工作?

当一个 http 请求进来时,说这个请求是针对 mygithub.mypage.com,github 必须知道这个请求是代表谁的,所以它必须传递给谁的页面。

这就是 github 处的设置。

准确的说,github的服务器看到的是一个类似

的http请求
GET / HTTP/1.1
Hostname: mygithub.mypage.com

没有关于mypage.github.io的概念。他们可以进行 DNS 查询以找出 mygithub.mypage.com 指向的位置,但他们选择使用此版本。

我做了进一步的思考,我认为 glglgl 的回答没有回答我的问题。因为在我的域提供商中:我添加了这样的 CNAME 记录:
当请求到达 github 时,github 应该有足够的信息知道要传送哪个用户的 github 页面,对吗?很明显请求是获取 xxuser 的 github 页面。

那为什么 github 页面需要一个额外的 CNAME 文件?我认为,原因在于它赋予了存储库所有者控制允许 link 访问存储库网站的自定义域的权力。如果不在 CNAME 文件 link 中的自定义域到 github 页面,github 将显示 404 错误页面。这意味着只能 linked 所有者放入 CNAME 文件的自定义域,这显然是存储库所有者拥有的域。