为什么我的 Github 托管站点响应 HTTP 302 而不是 200? [英] Why is my Github-hosted site responding with HTTP 302 instead of 200?

查看:17
本文介绍了为什么我的 Github 托管站点响应 HTTP 302 而不是 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆