是否可以以不同于服务调用的 404 响应的方式处理页面请求的 404?
如果有人请求,我希望默认显示 404 页面https://example.com/pagethatdoesnotexist.html。但是,我希望从https://otherexample.com/api/thing/1汇入我的客户端应用程序,以便我可以向用户提供有用的消息。
我尝试在 web.config 中使用 customErrors,但它捕获了所有内容。这可行吗?还是我只能使用配置中的默认 404 页面捕获全部或全部不捕获?
答案1
您可以做的是创建自定义404页。
在该页面上,您可以放置所需的所有逻辑,例如,处理 API 逻辑,甚至更改响应代码以发送200代替404。
如果某些事情不是由您的自定义逻辑处理的,您应该使用以下代码发送 404 响应代码:(使用 PHP 的示例)
<?php
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
?>
答案2
我的解决方案不起作用的原因是我对自定义错误和 http 错误的误解。我正在寻找
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/errorPages/404.html" responseMode="ExecuteURL" />
</httpErrors>
这将捕获任何错误的页面请求并允许我的应用程序处理来自 api 响应的 404。