Древний вопрос, но мне пришлось самому разобраться с устаревшим приложением.
Коллекция Classic ASP Response.Cookies
просто не поможет при добавлении тега HttpOnly
. Вам нужно использовать
Response.AddHeader("Set-Cookie", useful_value)
чтобы заставить это работать. Если вы попытаетесь установить атрибут Path элемента в коллекции Response.Cookies
, например,
Response.Cookies["stupid"].Path = "/; HttpOnly"
он услужливо URLE кодирует точку с запятой, тем самым разрушая путь.
Итак, я выполнил пару классических функций аспина для этой цели, предложенных здесь в знак солидарности со всеми, кто живет с классическим аспином.
' 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
Чтобы использовать это, назовите это так
Response.AddHeader "Set-Cookie", _
RFC6265CookieValue( _
"cookiename", _
"size=big&flavor=chocolate+chip" _
DateAdd("yyyy", 1, Now()), domain), _
"example.com"
(Классический ASP похож на дискотеку. Поколение спустя, все еще отстой.)