我有一个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_INFO
和HSE_REQ_VECTOR_SEND
。两者都有相同的行为。
注2:如果我删除WriteClient()调用并且只调用ecb-> ServerSupportFunction(),我的返回数据是我似乎无法改变后跟一行的默认标题(这是现在是" Content-Type:image / jpeg")的内容正文。因此,这种行为不是通过调用WriteClient()
发送头数据引起的如何修改响应标头以便我可以发送已修改的"内容类型:" ?