Indy HTTP服务器不允许上传大文件

时间:2015-10-09 18:55:08

标签: indy

我想知道如果想要将大量二进制文件等大量数据发送到我的http服务器,是否可以停止连接?如果有可能那么。

1 个答案:

答案 0 :(得分:1)

是的,有时可能,但可能无法所有时间。

TIdHTTPServer有一个OnHeadersAvailable事件,该事件在读取客户端的请求标头之后且在读取请求正文之前触发。该事件使您可以访问标题。您可以检查Content-Length标头的值,如果它不适合您的需要,则可以将事件的VContinueProcessing参数设置为False以拒绝该请求。如果要自定义发送回客户端的错误消息,请使用OnHeadersBlocked事件根据需要提供您自己的ResponseNoResponseTextContentText值。

请注意,这仅在客户端发送Content-Length标头时才有效。这不是严格要求的,具体取决于上传的性质。客户端可以使用chunked转移编码或MIME multipart/form-data帖子,这两种帖子都是不依赖Content-Length标头的自终止格式。如果您想坚持客户端发送Content-Length标头,如果标头丢失,您可以使用411(需要长度)响应代码拒绝该请求。