2009-06-29 41 views

Respuesta

2

Puede enviar el encabezado HTTP usted mismo. O intente agregarlo a la propiedad de ruta. Podría escribir una función auxiliar para hacerlo por usted.

http://www.asp101.com/tips/index.asp?id=160

Dim myCookie As HttpCookie 
myCookie = New HttpCookie("LastVisit", DateTime.Now.ToString()) 
myCookie.Path += "; HttpOnly" 
Response.AppendCookie(myCookie) 
+0

1 para el código que ayudó me traduzco a ASP :) – shahkalpesh

+0

No puede simplemente agregarlo a la propiedad path. Eso se codificará –

+2

Esto no es [tag: asp-classic] pero tiene 2 votos, ¿quién hace esto? – Lankymart

10

me temo utilizando la colección Response.Cookies no funcionará cuando se configura HttpOnly (que me ha estado conduciendo lentamente loco!). Como vbscript (al menos en el servidor en el que estoy probando) el carácter codificará el punto y coma.

lugar, agregue la cabecera manualmente a sí mismo, por ejemplo:

Response.AddHeader "Set-Cookie", "YourCookieName=YourCookieValue; path=/; HttpOnly" 

Hay un puesto similar en StackOverflow llamada: How exactly do you configure httpOnly Cookies in ASP Classic?

+1

¡SÍ! Esto funciona ¡Lástima que no es la respuesta aceptada porque seguí ese y perdí mucho tiempo! –

-1
Response.AddHeader "Set-Cookie", ""&CStr(Request.ServerVariables("HTTP_COOKIE"))&";path=/;HttpOnly"&"" 
0

Antigua pregunta, pero tuve que resolverla para una aplicación heredada.

La colección Classic Response.Cookies de ASP simplemente no servirá para agregar la etiqueta HttpOnly. Debe utilizar

Response.AddHeader("Set-Cookie", useful_value) 

para hacer que esto funcione. Si se intenta establecer el atributo de ruta de un elemento de la colección Response.Cookies como esto

Response.Cookies["stupid"].Path = "/; HttpOnly" 

que amablemente URLEncodes el punto y coma, corrompiendo así el camino.

Por lo tanto, saqué un par de funciones de asp clásico para el propósito, que se ofrecen aquí en solidaridad con todos los que viven con asp clásico.

' given a Date item, return the text string suitable for a cookie's expires= field. 
' For example: Tue, 02-Aug-2016 18:57:00 GMT 
function RFC6265Date (inputDate) 
    ' (we are on EST, Z-5, so offset the time. Classic ASP, no timezone support) 
    dim date: date = DateAdd("h",5,inputDate) 
    dim v : v = WeekdayName(Weekday(date),true) & ", " 
    v = v & Right("00" & Day(date), 2) & "-" 
    v = v & MonthName(Month(date),true) & "-" & Year(date) & " " 
    v = v & FormatDateTime(date,4) & ":00 GMT" 

    RFC6265Date = v 

end function 

' make cookie header value including various security items 
function RFC6265CookieValue(name, val, inputDate, domain) 
'name=tok=val&tok=val&tok=val; domain=.glance.net; expires=Tue, 02-Aug-2016 18:57:00 GMT; path=/; HttpOnly; secure 

    dim cv : cv = name & "=" 
    cv = cv & val & "; " 
    if inputDate <> "" then 
     cv = cv & "expires=" & RFC6265Date(inputDate) & "; " 
    end if 
    if domain <> "" then 
     cv = cv & "domain=" & domain & "; " 
    end if 
    cv = cv & "path=/; HttpOnly; Secure" 

    RFC6265CookieValue = cv 

end function 

Para utilizar esta, llamarlo como esto

Response.AddHeader "Set-Cookie", _ 
        RFC6265CookieValue(_ 
        "cookiename", _ 
        "size=big&flavor=chocolate+chip" _ 
        DateAdd("yyyy", 1, Now()), domain), _ 
        "example.com" 

(ASP clásico es como discoteca. Una generación más tarde, todavía chupa.)