开发者

IE response.redirect

开发者 https://www.devze.com 2023-02-18 23:40 出处:网络
I ran into an extremely odd issue with IE today. IE fails every time I try to do a response.redirect more than ten times! Of course, th开发者_运维知识库e page works fine in FF and Chrome. Has anyone e

I ran into an extremely odd issue with IE today. IE fails every time I try to do a response.redirect more than ten times! Of course, th开发者_运维知识库e page works fine in FF and Chrome. Has anyone else experienced something like this?

Here are some code snippets to make sure I am not doing anything blatantly wrong...

Loop

if ( iDomain < ubound(aDomain) ) then
    Response.Redirect "/home/login/a_logout.asp?site=" & strSite & "&domain=" & iDomain+1 & "&l=" & ilogout & "&s=" &sSid
end if

Array

Dim aDomain(10)

aDomain(0) = ".x.com"
aDomain(1) = "www.x.com"
aDomain(2) = "w1.x.com"
aDomain(3) = "w2.x.com"
aDomain(4) = "x.com"
aDomain(5) = "w3.corporate.x.com"
'aDomain(5) = "w4.x.com"
aDomain(6) = "w5.x.com"
aDomain(7) = "w6.x.com"
'aDomain(8) = ""
'aDomain(9) = "w8.x.com"
aDomain(8) = "w9.x.com" 
aDomain(9) = "w10.x.com"

Removed context sensitive data.

Let me know if you need any other info. Thanks!


This is the default behaviour to prevent a user from being looped back to the same page infinitely.

IE8s limit is 10 requests to the same page, Chrome and FireFox I believe are 20.

And no, a different querystring doesn't constitute a new page as I found out myself.


I would highly suggest that you change this. Redirecting multiple times is a pretty bad idea.

Instead, just run whatever code is being run by your a_logout page locally. I'm assuming your clearing several cookies. Go ahead and resend all of the appropriate cookies with blank data and an expires yesterday time.


Redirecting so often is blatantly wrong. The ideal maximum number of redirects is 1. In practice it can be a lot easier to do certain tasks if you allow for more than that, but anywhere more than 5 redirects happen should be considered a bug (more than 1 on the same server or more than 3 that crosses to another server should be considered sub-optimal, but not urgent to fix).

Browsers can't depend upon servers never doing anything blatantly wrong, so after a few goes they give up to save the user from the server. Sometimes user-agents don't protect themselves in this way (not serious browsers, but it's an easy mistake to make writing a simple piece of HTTP client code). It isn't pretty.

To demonstrate just how bad this can be, consider a case where the handler for /somePath/?id=1 redirects to /somePath/?id=2 which redirects to /somePath/?id=3 and so on. For all the server knows, you've just got a more obscure version of that, and will never stop redirecting.

0

精彩评论

暂无评论...
验证码 换一张
取 消