2016-05-09 11 views
0

Im klassischen ASP, wenn ich einen Cookie mit Response.Cookies ("data1") = "value1" dann setze, kann ich diesen Cookie mit lesen Request.Cookies ("data1") auf derselben SeiteUnterschied zwischen Response.Cookies und Response.AddHeader "Set-Cookie"

Aber wenn ich die Syntax Response.AddHeader "Set-Cookie", "data2 = value2" und dann benutze, kann ich diesen Cookie nicht mit Request lesen. Cookies ("data2") auf derselben Seite.

So Was ist der Unterschied zwischen diesen beiden Syntaxen der Einstellung Cookie ist und wenn ich will, um das Cookie lesen Sie die zweite Syntax, wie die Leseanweisung wie

+0

Das ist, weil 'Response.AddHeader' die Header während der Antwort * (Daten zurück zum Client) * hinzufügt, während' Response.Cookies' die Sammlung vor dem Senden der Antwort erstellt und dann 'set-cookie' HTTP setzt Header beim Senden der Antwort, das bedeutet, bis die Antwort gesendet wird, gibt es Zeit, die Cookie-Sammlung zu ändern. – Lankymart

Antwort

1

Beide Methoden setzen den HTTP-Header aussehen Sould

set-cookie 

aber mit einem entscheidenden Unterschied.

Response.Cookies ist eine Sammlung, die vorkonfiguriert ist, wenn die Antwort zum Senden bereit ist, wird der HTTP-Header set-cookie erstellt. Dies bedeutet, dass die Werte für die Lebensdauer der Seite, auf der die Cookie-Auflistung angegeben ist, beliebig oft bearbeitet werden können.

Response.AddHeader() den HTTP-Header set-cookie setzt, wenn die Antwort an den Client zurückgesendet wird, hat es überhaupt keinen Zusammenhang zu Response.Cookies() und

Response.AddHeader("set-cookie", "...") 

wird nicht auf magische Weise bevölkern die Response.Cookies Sammlung zu setzen. Die einzige Möglichkeit, die Cookies-Sammlung ohne Verwendung von Response.Cookies() zu bevölkern, besteht darin, einen Rundlauf zum Server durchzuführen, nachdem Response.AddHeader() festgelegt wurde.