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

时间:2016-03-23 06:03:48

标签: github-pages cname

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

事情如何一起运作?

2 个答案:

答案 0 :(得分:2)

当一个http请求进来时,说该请求是针对mygithub.mypage.com的,github必须知道该请求的代表,因此必须提供其页面。

这就是github的设置。

确切地说,github的服务器看到的是像

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

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

答案 1 :(得分:0)

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

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