我正在使用VS 2017和常规C在Windows 10上编写ISAPI扩展。
它工作得很好,但现在我遇到了错误处理问题。我故意遇到错误,以确保错误消息是正确的。当客户端应用程序(不是浏览器)和IIS在同一台机器上时,我得到了我预期的错误消息。当我连接到另一台PC上的副本时,我获得了500个状态的IIS通用html。
这是我生成标题的地方:
// Send HTTP headers
SendHttpHeaders(pECB, "500 Internal Server Error", "Content-Type: text/plain\r\n\r\n");
SendHttpHeaders是我发送标头的包装函数。我
以下是最后两行代码:
pECB->dwHttpStatusCode = HTTP_STATUS_SERVER_ERROR;
return HSE_STATUS_ERROR;
为什么我没有收到我的自定义消息?
除非另外配置IIS,否则detailed error messages are only shown to browsers connecting from localhost。
虽然链接的帖子描述了如何控制此行为,但请注意,此阻止旨在作为安全功能,并且(如他们所述)取决于您的站点实现,这可以在触发错误条件时将内部详细信息公开给公共视图(即你不期望利用这种行为,例如从一个bug)。这可能是也可能不是安全问题,具体取决于您的运营环境(例如,公共互联网与企业内部网),数据敏感性等。