为什么我的 Github 托管站点响应 HTTP 302 而不是 200? [英] Why is my Github-hosted site responding with HTTP 302 instead of 200?
问题描述
我拥有域 penkov.id.au.我使用 github,子域有A记录michael.penkov.id.au代码>指向github页面服务器(204.232.175.78).
I own the domain penkov.id.au. I host a blog using github, with an A record for the subdomain michael.penkov.id.au
pointing to the github pages server (204.232.175.78).
bash-3.2$ dig michael.penkov.id.au +nocomments +nocmd +nostats
; <<>> DiG 9.8.3-P1 <<>> michael.penkov.id.au +nocomments +nocmd +nostats
;; global options: +cmd
;michael.penkov.id.au. IN A
michael.penkov.id.au. 86400 IN A 204.232.175.78
penkov.id.au. 14399 IN NS ns1.linode.com.
penkov.id.au. 14399 IN NS ns5.linode.com.
penkov.id.au. 14399 IN NS ns4.linode.com.
penkov.id.au. 14399 IN NS ns2.linode.com.
penkov.id.au. 14399 IN NS ns3.linode.com.
ns1.linode.com. 62648 IN A 69.93.127.10
ns1.linode.com. 136520 IN AAAA 2600:3c00::a
ns2.linode.com. 67499 IN A 65.19.178.10
ns2.linode.com. 122812 IN AAAA 2600:3c01::a
ns3.linode.com. 124971 IN A 75.127.96.10
ns3.linode.com. 133162 IN AAAA 2600:3c02::a
ns4.linode.com. 96383 IN A 207.192.70.10
ns4.linode.com. 904 IN AAAA 2600:3c03::a
ns5.linode.com. 44638 IN A 109.74.194.10
ns5.linode.com. 56329 IN AAAA 2a01:7e00::a
最近(大约一个月前,也许更多),我发现所有对子域的请求(例如 http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html) 遇到了 302 响应.对于像 facebook.com 这样的网站来说,这是一个问题,它们不会费心访问该 URL 来提供预览.Github 注意 302 重定向不是错误,应该被遵循,但 Facebook 显然忽略这一点.
Recently (around a month ago, maybe more), I've found that all requests to the subdomain (e.g. http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html) are met with a 302 response. This is a problem for sites like facebook.com, which don't bother accessing that URL to provide previews. Github notes that 302 redirects are not errors and should be followed, but Facebook apparently ignores that.
我查看了请求 &使用 Chrome 调试工具的响应头:
I had a look at the request & response headers using Chrome's debugging tools:
请求:
GET /blog/2014/01/02/reinventing-the-wheel.html HTTP/1.1
Host: michael.penkov.id.au
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ja;q=0.6,ru;q=0.4
Cookie: __utma=146715829.533338776.1383309288.1383487335.1383547294.7; __utmz=146715829.1383309288.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=118121621.1819750941.1383609188.1387026971.1388676605.15; __utmb=118121621.11.10.1388676605; __utmc=118121621; __utmz=118121621.1387026971.14.7.utmcsr=facebook.com|utmccn=(referral)|utmcmd=referral|utmcct=/
If-Modified-Since: Thu, 02 Jan 2014 14:38:15 GMT
回复:
HTTP/1.1 302 Found
Connection: close
Pragma: no-cache
cache-control: no-cache
Location: /blog/2014/01/02/reinventing-the-wheel.html
最后,重现此问题的可靠方法是使用 Facebook URL 调试工具.指向 http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html 查看问题.
Finally, a sure way to reproduce this problem is to use the Facebook URL debugging tool. Point it at http://michael.penkov.id.au/blog/2014/01/02/reinventing-the-wheel.html to see the problem.
我的问题:
- 是什么导致了重定向?是A记录吗?
- 重定向实际上指向哪里?我怎样才能找到这个?我该如何解决?
- 我可以摆脱重定向吗?换句话说,如何让服务器返回 200 而不是 302?其他具有相同设置的网站(例如 http://mdswanson.com/blog/2013/11/13/some-tools-i-like.html) 回复 200.
- What is causing the redirect? Is it the A-record?
- Where is the redirect actually to? How can I find this out? How can I fix it?
- Can I get rid of the redirect? In other words, how do I get the server to return 200 instead of 302? Other sites with an identical setup (e.g http://mdswanson.com/blog/2013/11/13/some-tools-i-like.html) respond with 200.
推荐答案
这是我从 github 支持人员那里听到的:
Here's what I heard from github support:
指向 204.232.175.78 的 A 记录是导致 302 重定向的原因.
The A record pointing to 204.232.175.78 is what's causing the 302 redirect.
在我的 DNS 设置中用 CNAME(指向 mpenkov.github.com)替换 A 记录解决了问题.
Replacing the A record with a CNAME (pointing to mpenkov.github.com) in my DNS settings fixed the problem.
作为参考,这是我的 DNS 记录现在的样子:
For reference, here's what my DNS record looks like now:
misha@misha-antec:~$ dig michael.penkov.id.au +nocomments +nocmd +nostats
; <<>> DiG 9.8.1-P1 <<>> michael.penkov.id.au +nocomments +nocmd +nostats
;; global options: +cmd
;michael.penkov.id.au. IN A
michael.penkov.id.au. 85536 IN CNAME mpenkov.github.com.
mpenkov.github.com. 2736 IN CNAME github.map.fastly.net.
github.map.fastly.net. 25 IN A 103.245.222.133
这篇关于为什么我的 Github 托管站点响应 HTTP 302 而不是 200?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!