我正在使用VS 2017和常规C在Windows 10上编写ISAPI扩展。
它很好用,但是现在我在错误处理上遇到了麻烦。我故意遇到错误,以确保错误消息是正确的。当客户端应用程序(不是浏览器)和IIS位于同一台计算机上时,我得到了预期的错误消息。当我连接到另一台PC上的副本时,将获得IIS通用html,表示状态为500。
在这里生成标题:
// 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;
为什么我没有收到自定义消息?
答案 0 :(得分:1)
除非另外配置了IIS,detailed error messages are only shown to browsers connecting from localhost。
虽然链接的文章描述了如何控制此行为,但请注意,此阻止旨在作为一种安全功能,并且(如它们所提到的)取决于您的站点实现,当触发错误条件时,这可以将内部详细信息公开显示(即您不希望利用此行为的行为,例如来自错误的行为)。取决于您的操作环境(例如,公共Internet与公司Intranet),数据敏感性等,这可能是安全隐患,也可能不是安全隐患。