2009-06-29 9 views

Répondre

2

Vous pouvez envoyer l'en-tête HTTP vous-même. Ou essayez de l'ajouter à la propriété path. Vous pourriez écrire une fonction d'aide pour le faire pour vous.

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 pour le code qui a aidé moi traduire en ASP :) – shahkalpesh

+0

Vous ne pouvez pas simplement l'ajouter à la propriété path. Cela va être encodé. –

+2

Ce n'est pas [tag: asp-classic] mais il a 2 votes, qui fait ça? – Lankymart

10

Je crains que la collection en utilisant Response.Cookies ne fonctionnera pas lors de la mise HttpOnly (il a été de me rendre fou lentement!). Comme vbscript (bien au moins sur le serveur que je suis en train de tester), les caractères seront codés par le point-virgule.

Au lieu de cela, ajoutez l'en-tête vous-même manuellement, par exemple:

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

Il y a un poste similaire sur stackoverflow appelé: How exactly do you configure httpOnly Cookies in ASP Classic?

+1

OUI! Cela fonctionne. Dommage que ce ne soit pas la réponse acceptée car j'ai suivi celle-là et j'ai gaspillé beaucoup de temps! –

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

Question ancienne, mais je devais me débrouiller pour une application héritée moi-même.

La collection Response.Cookies de Classic ASP ne fera tout simplement pas l'affaire pour ajouter l'étiquette HttpOnly. Vous devez utiliser

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

pour que cela fonctionne. Si vous essayez de définir l'attribut de chemin d'un élément dans la collection Response.Cookies comme celui-ci

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

il URLEncodes obligeamment le point-virgule, corrompant ainsi le chemin.

J'ai donc créé quelques fonctions classiques d'asp, proposées ici en solidarité avec tous ceux qui vivent avec l'asp classique.

' 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 

Pour l'utiliser, appelez comme ça

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

(ASP classique est comme discothèque. Une génération plus tard, il encore suce.)