我正在使用ISAPI DLL并遇到一种情况,即如果总cookie大小超过4096字节,则DLL的TWebRequest.Cookie根本不显示任何cookie。有没有办法处理大饼干?
答案 0 :(得分:0)
在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。您还可以使用自定义字段发送数据(这些字段更容易从浏览器端创建/操作),例如&# 34; X-Example-Your-Data:abcde" (也限于4096字节)。 您可以使用相同的GetFieldByName()方法检索此数据。