Page MenuHomePhabricator

HTTP/1.1 504 Gateway Time-out on http://www.wikipedia.org/wiki/ when 'User-Agent: iPhone' is set
Closed, ResolvedPublic

Description

$ curl -v -H 'User-Agent: iPhone' http://www.wikipedia.org/wiki/

  • About to connect() to www.wikipedia.org port 80 (#0)
  • Trying 2620:0:861:ed1a::1...
  • connected
  • Connected to www.wikipedia.org (2620:0:861:ed1a::1) port 80 (#0)

GET /wiki/ HTTP/1.1
Host: www.wikipedia.org
Accept: */*
User-Agent: iPhone

  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • additional stuff not fine transfer.c:1037: 0 0
  • HTTP 1.1 or later with persistent connection, pipelining supported

< HTTP/1.1 504 Gateway Time-out
< Server: nginx/0.7.65
< Date: Fri, 19 Oct 2012 20:29:48 GMT
< Content-Type: text/html
< Content-Length: 183
< Connection: keep-alive
<
<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/0.7.65</center>
</body>
</html>

  • Connection #0 to host www.wikipedia.org left intact
  • Closing connection #0

Version: unspecified
Severity: normal
See Also:
https://bugzilla.wikimedia.org/show_bug.cgi?id=36601

Details

Reference
bz41224

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 1:03 AM
bzimport set Reference to bz41224.
bzimport added a subscriber: Unknown Object (MLST).

I can confirm this happening with not just iPhone but also Android. This issue is upstream of Mobile Front end as MF doesn't serve this URL

curl -v H 'User Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3' http://www.wikipedia.org/wiki/ works fine for me

Is it because the user agent is invalid?

(In reply to comment #2)

curl -v H 'User Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)
AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3'
http://www.wikipedia.org/wiki/ works fine for me

Is it because the user agent is invalid?

I don't know what are you referring to with "invalid". "User Agent:" is not valid. The correct header is "User-Agent:". And the value for that header can be any arbitrary string, so there's apparently no valid/invalid value for that

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43

Even with your suggested value for user-agent, there's no response. You can test this with any telnet client (preferably not the native telnet command of Windows, use PuTTY instead in RAW mode), connecting to www.wikipedia.org on port 80 and sending the following lines of text (with 2 empty newlines at the end):

GET /wiki/ HTTP/1.1
Host: www.wikipedia.org
Accept: */*
User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3

Sorry it indeed was a syntax error.
When I do curl -v -H 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3' http://www.wikipedia.org/wiki/

I do indeed get no response

By invalid I had merely hazarded a guess that the servers had not had the user agent 'iPhone' in mind but since the above user agent doesn't work either this is not it, I'm well aware they can be any arbitrary string. I should have double checked my syntax to avoid confusion on the bug thread. Sorry for that.

Can't reproduce; I get HTTP/1.1 301 Moved Permanently.