1

我有一个 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

请注意,它不会将“Content-Type:”更改为“image/jpeg”,而是保留"Content-Type: text/html". 奇怪的是,它将我的标题信息放入(即正文的第一行是“Content-Type:image/jpeg”......后面是实际的图像数据)。

注 1:我已经尝试HSE_SEND_HEADER_INFOHSE_REQ_VECTOR_SEND. 两者都给出相同的行为。

注意 2:如果我删除 WriteClient() 调用并只调用 ecb->ServerSupportFunction(),我的返回数据是我似乎无法更改的默认标头,后跟一行(现在是内容正文) “内容类型:图像/JPEG”)。因此,此行为不是由通过调用 WriteClient() 发送标头数据引起的

如何修改响应标头以便发送修改后的“Content-Type:”?

4

0 回答 0