如何处理无效页面请求导致的 404 错误,但不处理无效 API 响应?

如何处理无效页面请求导致的 404 错误,但不处理无效 API 响应?

是否可以以不同于服务调用的 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。

相关内容