HTTP Redirection Hell
I've been listening to the Zippcast podcast for a while, it's quite interesting for a bike tech nerd like me, even though it's a marketing oriented podcast. The problem is that the podcast doesn't work in iTunes. Lets look at the latest episode:
Examining the feed at http://feeds.feedburner.com/zipp I obtain the URL for the MP3 file (The
/rss/channel/item/enclosure element, expressed in XPath): http://feeds.feedburner.com/~r/zipp/~5/294555004/080519_ZippCast_0049.mp3.
Lets examine the headers:
% curl --head http://feeds.feedburner.com/~r/zipp/~5/294555004/080519_ZippCast_0049.mp3 HTTP/1.0 302 Moved Temporarily Date: Mon, 02 Jun 2008 20:28:29 GMT Server: Apache X-FB-Host: app15 Location: http://cdn4.libsyn.com/zipp/080519_ZippCast_0049.mp3 P3P: CP="ALL DSP COR NID CUR OUR NOR" Keep-Alive: timeout=30, max=100 Connection: keep-alive Content-Type: audio/mpeg
If you don't have
curl(1) you can use
w3m(1) instead, refer to the respective manuals for how to see HTTP headers. The
curl(1) prgram is standard on Mac OS X, and even works on Windows too.
Location: HTTP header is a redirect. Lets follow:
% curl --head http://cdn4.libsyn.com/zipp/080519_ZippCast_0049.mp3 HTTP/1.1 302 Moved Temporarily Date: Mon, 02 Jun 2008 20:29:11 GMT Content-Length: 206 Content-Type: text/html Location: http://media.libsyn.com/bounce/http://cdn4.libsyn.com/zipp/080519_ZippCast_0049.mp3 Server: Footprint Distributor V4.2 Connection: keep-alive % curl --head http://media.libsyn.com/bounce/http://cdn4.libsyn.com/zipp/080519_ZippCast_0049.mp3 HTTP/1.1 301 Moved Permanently X-Powered-By: PHP/5.1.4 Location: /media/zipp/080519_ZippCast_0049.mp3 Content-type: text/html Date: Mon, 02 Jun 2008 20:29:46 GMT Server: lighttpd/1.4.15
% curl --head http://media.libsyn.com/media/zipp/080519_ZippCast_0049.mp3 HTTP/1.1 302 Found X-Powered-By: PHP/5.1.4 Location: http://cdn1.libsyn.com/zipp/080519_ZippCast_0049.mp3?nvb=20080602203748&nva=20080603203748&t=00d47876b74e289c7df18 Content-type: text/html Date: Mon, 02 Jun 2008 20:37:48 GMT Server: lighttpd/1.4.15 % curl --head 'http://cdn1.libsyn.com/zipp/080519_ZippCast_0049.mp3?nvb=20080602203748&nva=20080603203748&t=00d47876b74e289c7df18' HTTP/1.1 200 OK Content-Length: 9581864 Content-Type: audio/mpeg ETag: "40f21e8c7f96c1a78999155117a5c32c" Last-Modified: Mon, 19 May 2008 15:18:02 GMT Server: AmazonS3 x-amz-request-id: 8EE745DC60620FC8 x-amz-id-2: Trs3w1sY7bwGJIUya2WesWU6SBDyCtQWGEG8PUrySXr6+0YjC/r73J0mrNImSoOY Date: Mon, 02 Jun 2008 20:38:41 GMT Connection: keep-alive
Finally I get the actual audio file.
Whether it's the invalid
Location: header or the number of redirects to get to the file that iTunes chokes on I can't tell, but it seems to be a misconfiguration at Libsyn.
If I were to create a corporate podcasting setup I'd seriously consider not using external partners for it as Zipp does. Too many things can go wrong, as seen here, and it just looks bad. But it's probably significantly cheaper to risk looking bad, so in the end it's a question about money as always.