To confirm, I am also seeing this behaviour. Some output I've received on numerous occasions this evening:
-bash-3.2# curl --interface eth0 http://twitter.com/account/rate_limit_status.xml <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/ TR/1999/REC-html401-19991224/strict.dtd"> <!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> --> <HTML> <HEAD> <META HTTP-EQUIV="Refresh" CONTENT="0.1"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> <TITLE></TITLE> </HEAD> <BODY><P></BODY> </HTML> -Craig On Aug 8, 11:25 pm, Chad Etzel <c...@twitter.com> wrote: > Hmm, it shouldn't be spitting back HTML. How often are you seeing this? > -Chad > > > > On Sat, Aug 8, 2009 at 1:02 PM, Naveen Ayyagari<knig...@gmail.com> wrote: > > > Sometimes the rate_limit_status call is not returning a 302 to > > redirect, or the rate_limit_status xml, but HTML with a meta refresh > > in it (which curl doesnt understand to follow redirect/retry). > > > Its not huge problem for us, but it can affect some throttling code > > people may or may not be implementing. (when you get this response, a > > subsequent retry request usually succeeds 95% of the time) > > > Here is an example response I am talking about: > > > curlhttp://twitter.com/account/rate_limit_status.xml-L -v > > * About to connect() to twitter.com port 80 (#0) > > * Trying 168.143.162.68... connected > > * Connected to twitter.com (168.143.162.68) port 80 (#0) > > > GET /account/rate_limit_status.xml HTTP/1.1 > > > User-Agent: curl/7.18.2 (x86_64-pc-linux-gnu) libcurl/7.18.2 > > OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.8 > > > Host: twitter.com > > > Accept: */* > > > > > * HTTP 1.0, assume close after body > > < HTTP/1.0 200 OK > > < Connection: Close > > < Pragma: no-cache > > < cache-control: no-cache > > < Refresh: 0.1 > > < Content-Type: text/html; charset=iso-8859-1 > > < > > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" > > "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd > > "> > > <!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" > > "http://www.w3.org/TR/html4/strict.dtd"> --> > > <HTML> > > <HEAD> > > <META HTTP-EQUIV="Refresh" CONTENT="0.1"> > > <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> > > <META HTTP-EQUIV="Expires" CONTENT="-1"> > > <TITLE></TITLE> > > </HEAD> > > <BODY><P></BODY> > > </HTML> > > > On Aug 8, 2009, at 11:20 AM, Chad Etzel wrote: > > >> Hmm, > > >> Unfortunately this 302 business will completely goof OAuth calls. > > >> If you are able to programmatically see that you are getting these > >> redirects, try calling the account/rate_limit_status call [1] (it > >> could be any call, but this one is "free" and is a GET). You should > >> still get a 302 (I'm pretty sure). Then if you jump through the > >> redirect hoops with this call, it should clear you from more 302's for > >> a while. > > >> I'm out today, but if someone could try this and report back if it > >> works that would be helpful. > > >> [1]http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-account%C2%A0ra... > > >> Thanks, > >> -Chad > > >> On Sat, Aug 8, 2009 at 6:31 AM, > >> timwhitlock<tim.whitl...@publicreative.com> wrote: > > >>> I've seem the 302 Location headers having invalid URLs... i.e. two > >>> "?" > >>> symbols. > >>> The original query string and then an additional "?" for the token at > >>> the end. > >>> Following this redirect blindly has resulted in a Forbidden response. > > >>> Also it is unclear whether the redirect location needs to be re- > >>> signed? (I am not doing so, but may explain the 403?) > > >>> On Aug 8, 8:14 am, Rich <rhyl...@gmail.com> wrote: > >>>> Excellent our client now supports the 302's :) > > >>>> On Aug 8, 7:37 am, Chad Etzel <c...@twitter.com> wrote: > > >>>>> You may have to follow redirects more than once *wink wink nudge > >>>>> nudge* > > >>>>> with curl you can add --location flag. There's a good bit of info > >>>>> in > >>>>> the man page as well. > > >>>>> If using curl with PHP, you can set: > >>>>> curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); > > >>>>> HTH, > >>>>> -Chad > > >>>>> On Sat, Aug 8, 2009 at 1:31 AM, TjL<luo...@gmail.com> wrote: > > >>>>>> All of my scripts check for "Status 200" before proceeding. > > >>>>>> Now we are (sometimes) getting a 302, but when I try > > >>>>>> curl --netrc -s -D -http://twitter.com/account/rate_limit_status.xml > > >>>>>> Gave me a 302 with a Location of: > > >>>>>>http://twitter.com/account/rate_limit_status.xml?c73f7db0 > > >>>>>> but when I tried > > >>>>>> curl --netrc -s -D - > >>>>>> 'http://twitter.com/account/rate_limit_status.xml?c73f7db0' > > >>>>>> it seemed to want to redirect me to > > >>>>>>http://twitter.com/account/rate_limit_status.xml > > >>>>>> If "accepting 30x" is a requirement now, I'd like some advice on > >>>>>> how to do so. > > >>>>>> TjL