我正在使用 ISAPI DLL 并遇到一种情况,即如果总 cookie 大小大于 4096 字节,DLL 的 TWebRequest.Cookie 根本不显示任何 cookie。有没有办法处理大饼干?
问问题
374 次
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 回答