gpt4 book ai didi

vbscript - 经典 Asp cookie 的过期日期并不总是被设置

转载 作者:行者123 更新时间:2023-12-02 21:56:16 26 4
gpt4 key购买 nike

我正在尝试在 Classic Asp 中使用 addheader 方法设置 cookie,这是向 cookie 添加 HttpOnly 和 Secure 标志的唯一方法。所有这些都适用于以下代码 - 但有一个异常(exception),它是到期日期/时间。

<%
Response.AddHeader "Set-Cookie", "testCookie=2000; path=/;HttpOnly;Secure;expires=" & dateAdd("d", 365, Now()) & ";samesite=Strict;HostOnly"
%>

但是,这似乎是与浏览器相关的问题。在 Firefox 中,我可以在开发人员工具的“存储”选项卡中看到设置了过期时间。但在 Chrome 中,它始终保持默认状态,即 session 结束时过期。 Edge 也存在同样的问题。

有人遇到过这个问题吗?

最佳答案

预期的日期格式记录在here中。您需要以这种方式生成到期日期。

在经典 ASP 中,您可以使用服务器端 JavaScript 轻松生成此类日期。

<!--#include file="HTTPDate.asp"-->
<%
Response.AddHeader "Set-Cookie", "testCookie=2000; path=/;HttpOnly;Secure;expires=" & HTTPDate(DateAdd("d", 365, Now())) & ";samesite=Strict;HostOnly"
%>

HTTPDate.asp

<script language="javascript" runat="server">
function HTTPDate(vbsDate){
return (new Date(vbsDate)).toGMTString().replace(/UTC/, "GMT");
}
</script>

编辑:添加纯 VBScript 解决方案。

<%
Function CurrentTZO()
With CreateObject("WScript.Shell")
CurrentTZO = .RegRead( _
"HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
End With
End Function

Function Pad(text)
Pad = Right("00" & text, 2)
End Function

Function HTTPDate(ByVal localDate)
localDate = DateAdd("n", CurrentTZO(), localDate)

' WeekdayName and MonthName functions relies on locale
' need to produce day and month name abbreviations in en-US locale
Dim locale : locale = SetLocale("en-US")

Dim out(5)
out(0) = WeekdayName(Weekday(localDate), True) & ","
out(1) = Pad(Day(localDate))
out(2) = MonthName(Month(localDate), True)
out(3) = Year(localDate)
out(4) = Join(Array(Pad(Hour(localDate)), Pad(Minute(localDate)), Pad(Second(localDate))), ":")
out(5) = "GMT"

SetLocale locale ' set original locale back

HTTPDate = Join(out, " ")
End Function

Response.AddHeader "Set-Cookie", "testCookie=2000; path=/;HttpOnly;Secure;expires=" & HTTPDate(DateAdd("d", 365, Now())) & ";samesite=Strict;HostOnly"
%>

关于vbscript - 经典 Asp cookie 的过期日期并不总是被设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60215669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com