Here's the fix we use.  What we found is that if a redirect follows a POST,
then MSIE will ignore the arguments present on the redirect.

JIm

proc rl_returnredirect {location} {
  global __did_ns_return rlfont
  global __trace_endtime

  if {[info exists __did_ns_return]} {
    rl_log error "ignoring 2nd ns_returnredirect in [ns_conn url]"
    return
  } else {
    set __trace_endtime [ns_time]
    __rl_writeallcookies

# This is a huge hack - MSIE 5 doesn't correctly handle a redirect after
# a post; they don't send any arguments that came with the redirect

    if {[string first msie [string tolower [ns_set iget [ns_conn headers] 
"user-agent"]]] >= 0 && [string compare [string tolower [ns_conn method]] "post"] == 0 
&& [string first "?" $location] >= 0} {
      ns_return 200 text/html "<html><head><meta http-equiv=\"Refresh\" Content=\"0; 
URL=$location\"></head><body>Please wait.  If this does not automatically refresh, <a 
href=\"$location\">Click here to continue</a></font></body></html>"
    } else {
      aol_ns_returnredirect $location
    }
    set __did_ns_return 1
  }
}

# NOTE: next rename fails when file is sourced, 2nd rename fails
# on boot; this is correct
catch {rename ns_returnredirect aol_ns_returnredirect}
catch {rename ns_returnredirect {}}
rename rl_returnredirect ns_returnredirect




>
> Hi AOLserver folks,
>
> we're seeing a AOLserver problem in production on AOL.COM. Unfortunately,=20
> they're running a very outdated version (2.3.3), just wanted to make sure yo=
> u=20
> guys fixed this problem in later releases, here it is.
>
> Magic Carpet is POSTing to www.aol.com, which in turn issues a redirect. Thi=
> s=20
> causes IE5.5 and IE6 to display a "page not found" error in certain=20
> circumstances. Weird circumstances. Turns out it relates to the number of=20
> packets sent by the browser:
>
> We have following events sequence:
> =A0=A0=A0 1) IE sends first request TCP packet to aol.com server with HTTP h=
> eader:
> =A0=A0=A0 =A0 =A0=A0=A0 POST /index.adp HTTP/1.0
> =A0=A0=A0 =A0=A0=A0 =A0 ......=A0 =A0=A0=A0=20
> =A0=A0=A0 =A0=A0=A0 =A0Content-Length: 393
> =A0=A0=A0 =A0=A0=A0 =A0....
> =A0=A0=A0 2) AOL.com server *immidiatelly* replies with HTTP 302 redirect
> =A0=A0=A0 3) IE continues request and sends second TCP packet with HTTP body=
> :
> =A0=A0=A0 =A0=A0 =A0siteId=3DaolcomprodStage&siteState.....
> =A0=A0=A0 4) IE starts listening for reply from AOL.com server
> =A0=A0=A0 5) IE failed to recieve data from AOL.com server (because reply wa=
> s=20
> already sent on step 2)
> =A0=A0=A0 and shows error page to user
>
> So the AOL server bug=A0 is that redirect is done *before* recieving HTTP bo=
> dy=20
> for POST request. If you turn on a proxy for the web browser, the problem=20
> goes away, because this way the packets come back in order.
>
> Again, we're aware that AOLserver version 2.3.3 is outdated -- but can you=20
> guys confirm the problem will go away if we update to a more recent release?=
> =20
> Any help apprechiated.
>
> -- Mike
>
> Mike Schilli
> [EMAIL PROTECTED]
> Magic Carpet Engineering
>

Reply via email to