无法修改isapi扩展程序

时间:2017-09-21 16:03:41

标签: isapi isapi-extension

我有一个isapi扩展,它通过WriteClient()返回一个图像文件。

我需要返回" Content-Type:image / jpeg"在标题中(否则调用应用程序将不处理图像)

因此,我创建了一个HSE_SEND_HEADER_EX_INFO结构并拥有成员pszHeader = "Content-Type: image/jpeg\r\n\r\n"

在发出WriteClient()之前,我调用

ecb->ServerSupportFunction( ecb->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX, &newHeader, NULL, NULL );

从调用ServerSupportFunction()返回TRUE(无需调用GetLastError())

但是,我的标题信息被放入正文并且默认标题被发送到客户端。这是发送给客户端的标头:

X-Cache: MISS from ip-172-18-8-226

Server: Microsoft-IIS/8.5
 X-Cache-Lookup: HIT from ip-172-18-8-226:3128
 Content-Length: NNN
 Date: Thu, 21 Sep 2017 14:32:38 GMT
 X-Powered-By: ASP.NET
 Content-Type text/html

请注意,它不会改变"内容类型:" to" image / jpeg"但是,保留"Content-Type: text/html"。奇怪的是,它将我的标题信息放入(即,正文的第一行是"内容类型:图像/ jpeg" ...后跟实际的图像数据)。

注1:我尝试过HSE_SEND_HEADER_INFOHSE_REQ_VECTOR_SEND。两者都有相同的行为。

注2:如果我删除WriteClient()调用并且只调用ecb-> ServerSupportFunction(),我的返回数据是我似乎无法改变后跟一行的默认标题(这是现在是" Content-Type:image / jpeg")的内容正文。因此,这种行为不是通过调用WriteClient()

发送头数据引起的

如何修改响应标头以便我可以发送已修改的"内容类型:" ?

0 个答案:

没有答案