HttpWebRequest.Address vs HttpWebResponse.ResponseUri
-
20-09-2019 - |
Frage
Was ist der Unterschied zwischen diesen beiden Eigenschaften?
Um in einen Kontext zu setzen, ich bin zu bestimmen, ob eine Umleitung tritt auf, wenn unsere ResponseUri! = RequestURI.
Während eine Umleitung tritt unabhängig die URL http://adage.com/adages/article? article_id = 140560 wird eine andere ResponseUri bieten ( http://adage.com/adages/post .php ) als die Adresse ( http://adage.com/adages/post ? article_id = 140560 ).
Es erscheint der ResponseUri den Header Content-Location nimmt und nutzt sie, während die Adresse der richtigen Stelle hält.
wäre es richtig sein, die RequestURI zum HttpWebRequest.Address zu vergleichen für Umleitungen zu überprüfen?
Lösung
Ja, das Vergleichen request.RequestUri
und request.Address
ist der Weg zu gehen. Zumindest in Mono response.ResponseUri
ist die gleiche wie request.Address
.
Andere Tipps
Ich weiß, das ist eine alte Frage, aber ich fand es während dieses Thema untersucht, und bemerkte, es wurde nicht richtig tatsächlich beantwortet.
Während HttpWebRequest.Address
und HttpWebResponse.ResponseUri
sollte immer gleich sein, hier ist der Unterschied:
-
HttpWebResponse.Address
den Uri der Seite zurückzukehren tatsächlich reagiert -
HttpWebResponse.ResponseUri
den Wert desContent-Location
Header zurückgeben (falls vorhanden). Während die Dokumentation nicht explizit Staat tut was, wenn derContent-Location
Header geschieht nicht vorhanden ist, wird davon ausgegangen, es den gleichen Wert wieAddress
verwenden.
Denken Sie daran, HTTP-Header gefälscht werden kann, so dass Microsoft mit Address
statt ResponseUri
aus Sicherheitsgründen empfiehlt.
http://msdn.microsoft.com/ en-us / library / system.net.httpwebresponse.responseuri.aspx
Haben Sie sich Gedanken über die Einstellung request.AllowAutoRedirect = false und dann auf einer Umleitung der Anforderung Neuausstellung?
Die Uri Vergleich sollte auch funktionieren, obwohl ich bin nicht sicher, ob all die Ränder Fälle