I've not seen this before. I'm wondering whether more Access-Control stuff is needed on the response. Faye returns these fields for OPTIONS:
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'false',
'Access-Control-Max-Age': '86400',
'Access-Control-Allow-Methods': 'POST, GET, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Accept, Content-Type, X-Requested-With'
And it returns this on *all* requests if Origin is sent:
headers['Access-Control-Allow-Origin'] = origin
I wondering if it needs to echo more than just the origin in some cases to work (some user agents use OPTIONS to find out if CORS is allowed, some use headers on the resource itself).
When you say the client never attempts to reconnect, do you mean that it just never tries this particular request again, or can you not send messages to that client at all? I'm wondering if what you're seeing is the last /meta/connect request made with the default transport before it upgrades to WebSockets.