Hej allihop! Du svarade själv på frågan. Ja, ni svarar båda ungefär på frågan. Lite mer uttryckligt kan man säga att Server.Transfer och Response.Redirect gör inte alls samma sak. Server.Transfer flyttar helt enkelt exekveringen av en sida till en annan sida på servern. Det betyder alltså att om användaren surfat till http://www.servern.se/sida1.asp, och i denna körs koden Server.Transfer "sida2.asp", så kommer det fortfarande att stå http://www.servern.se/sida1.asp i adressfältet på klientens browser. Helt naturligt kan man alltså inte använda Server.Transfer för att 'flytta' användaren till en extern server, eftersom den interna servern inte kan exekvera sidor på en extern server... OK! Är det inte bara att de inte tillåter att en server dirigerar om dem till en annan server? Har för mig att det finns nån säkerhetsinställning för det? För jag kan inte tänka mig att någon browser i sig inte skulle stödja redirects, det är ju en del i HTTP-specifikationen. När det gäller redirect och netscape kan du se till att din http adress formateras korrekt innan du skickar iväg den för att konvertera space och andra specialtecken som Netscape inte gillar, exempelvis:Response.Transfer
Jag har haft denna fråga uppe tidigare men blir inte riktigt klok på det :)
Detta vill jag utföra:
Använda mig av Server.Transfer istället för Response.Redirect.
Jag vill skicka ett "länkvärde" till ett redirect-script vilket sedan omdirigerar till en EXTERN länk (url).
DETTA ÄR EN SIDA MED EXEMPELLÄNKAR:
a href="redirect.asp?choice=sida1">Sida 1</a
a href="redirect.asp?choice=sida2">Sida 2</a
DETTA ÄR ETT EXEMPEL REDIRECT SCRIPTET:
If Request.QueryString("choice") = "sida1" Then
Response.Redirect "http://www.externsida.se"
ElseIf Request.QueryString("choice") = "sida2" Then
Response.Redirect "http://www.annanexternsida.se"
End If
OK!
Nu vill jag veta om det går att helt enkelt byta ut Response.Redirect mot Server.Transfer på NÅGOT sätt?
Ovan exempel funkar alldeles utmärkt med Server.Transfer så länge jag använder mig "interna länkar" som exempelvis andra asp-sidor men inte vid hela (url:er) med (http://www) och hela köret.
Vitsen och syftet med hela upplägget är att redirect skall hanteras direkt på servern vilket server.transfer gör. Det funkar allstå INTE att bara byta ut Response.Redirect mot Server.Transfer.
Tack på förhand!
TorbjörnSv: Response.Transfer
Har för mig att server.transfer bara redirect'ar svaret internt på servern till en annan sida på servern. Går därför inte att använda den som Redirect till en sida som ligger på en annan server.Sv: Response.Transfer
Response.Redirect däremot skickar tillbaks ett 302 (har jag för mig) meddelande till klienten, vilket säger till klientbrowsern att den ska surfa till den nya adressen istället. Därför kan man självklart byta till vilken adress som helst med Response.Redirect. Men om man endast ska byta sida inom den interna siten så ska man självklart använda Server.Transfer, eftersom Response.Redirect som sagt innebär en extra roundtrip mellan klienten och servern.Sv: Response.Transfer
Tack för era bidrag!!
Är det någon som har lite koll om det finns några kända "problem"
med Response.Redirect. Har nämligen testat detta tidigare och
vissa "troligen" beroende på webbläsare har då endast fått en helt
blank sida istället för att bli omdirigerade.
Sannolikt är det väl Netskräp som spökar i vanlig ordning men andra
faktorer som proxyservrar kanske kan ställa till dylika problem??
Alla uppslag är mycket välkomna!
Väl mött
TorbjörnSv: Response.Transfer
Sv: Response.Transfer
Response.Redirect Server.UrlEncode(adressen)
/Pelle