Question

I am having an issue with IEMobile accessing my site. A certain redirect I use has a 302 response code, and the headers (yep, that's app-engine):

Server         Development/1.0 Python/2.5.2
Date           Tue, 04 Nov 2008 16:47:02 GMT
Content-Type   text/html; charset=utf-8
Cache-Control  no-cache
Location       http://localhost/games/edit-game.html?game=110&frame_to_edit=3#input-top
Content-Length 0

This works fine for most browsers. Enter IEMobile (via Windows Mobile 6.1). Upon receiving this response, IEMobile heads to

http://localhost/games/edit-game.html?game=110&frame_to_edit=3

Note the missing #input-top. What can I do?

Was it helpful?

Solution

Reading RFC2616 it specifies

Location: absoluteURI

where absolute URI is defined by RFC2396

Tracing the definition of absoluteURI, the # character is not part of the URI definition, this is confirmed by section 4.1

4.1. Fragment Identifier

When a URI reference is used to perform a retrieval action on the
identified resource, the optional fragment identifier, separated from
the URI by a crosshatch ("#") character, consists of additional
reference information to be interpreted by the user agent after the retrieval action has been successfully completed. As such, it is not part of a URI, but is often used in conjunction with a URI.

In short, the #fragment is not part of the URI, and is being stripped by the browser as not part of the Location: header.

OTHER TIPS

Dave is right, googling comes up with some the same issue.

Ugly workaround : use a meta refresh tag instead of redirect if you want to support that browser.

There's little you can do; it appears to be a bug in your browser (the implementers apparently have missed an RFC 2616 erratum).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top