2

我正在使用 ISAPI DLL 并遇到一种情况,即如果总 cookie 大小大于 4096 字节,DLL 的 TWebRequest.Cookie 根本不显示任何 cookie。有没有办法处理大饼干?

4

1 回答 1

1

在 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。您还可以使用自定义字段(从浏览器端创建/操作更容易)发送数据,例如“X-Example -Your-Data: abcde”(也限制为 4096 字节)。您可以使用相同的 GetFieldByName() 方法检索此数据。

于 2016-10-21T02:34:03.687 回答