Cookie 大小限制。大饼干
Cookie size limit. Large cookies
我正在使用 ISAPI DLL,遇到这样一种情况:如果 cookie 的总大小大于 4096 字节,DLL 的 TWebRequest.Cookie 根本不显示任何 cookie。有没有办法处理大饼干?
在 Delphi 中没有办法,除非您实现自己的 ISAPI 层(IntraWeb 所做的事情)。所有基于内置 ISAPI 层 (TISAPIRequest/TISAPIResponse) 的东西都无法处理它,因为它从请求中检索 cookie 字段的方式。方法是TISAPIRequest.GetFieldByName()(单位Web.Win.IsapiHTTP):
function TISAPIRequest.GetFieldByName(const Name: AnsiString): AnsiString;
var
Buffer: array[0..4095] of AnsiChar;
...
begin
...
end;
请注意,将获取实际数据的 Buffer var 限制为 4096 字节。这就是为什么您只能在 cookie 中接收此数量的数据。
我看不出你如何接收更多数据,除非你将它分成多个 cookie.You 也可以使用自定义字段发送数据(从浏览器端 create/manipulate 更容易),比如"X-Example-Your-Data: abcde"(也限制为 4096 字节)。
您可以使用相同的 GetFieldByName() 方法检索此数据。
我正在使用 ISAPI DLL,遇到这样一种情况:如果 cookie 的总大小大于 4096 字节,DLL 的 TWebRequest.Cookie 根本不显示任何 cookie。有没有办法处理大饼干?
在 Delphi 中没有办法,除非您实现自己的 ISAPI 层(IntraWeb 所做的事情)。所有基于内置 ISAPI 层 (TISAPIRequest/TISAPIResponse) 的东西都无法处理它,因为它从请求中检索 cookie 字段的方式。方法是TISAPIRequest.GetFieldByName()(单位Web.Win.IsapiHTTP):
function TISAPIRequest.GetFieldByName(const Name: AnsiString): AnsiString;
var
Buffer: array[0..4095] of AnsiChar;
...
begin
...
end;
请注意,将获取实际数据的 Buffer var 限制为 4096 字节。这就是为什么您只能在 cookie 中接收此数量的数据。 我看不出你如何接收更多数据,除非你将它分成多个 cookie.You 也可以使用自定义字段发送数据(从浏览器端 create/manipulate 更容易),比如"X-Example-Your-Data: abcde"(也限制为 4096 字节)。 您可以使用相同的 GetFieldByName() 方法检索此数据。